less-rails-semantic_ui 2.0.0.0 → 2.0.2.0

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 (24) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +1 -1
  4. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +36 -27
  5. data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +51 -25
  6. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +81 -40
  7. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +1 -1
  8. data/assets/javascripts/semantic_ui/definitions/modules/progress.js +2 -1
  9. data/assets/javascripts/semantic_ui/definitions/modules/tab.js +8 -8
  10. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +1 -1
  11. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +1 -1
  12. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +5 -1
  13. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +1 -1
  14. data/assets/stylesheets/semantic_ui/definitions/elements/label.less +6 -6
  15. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +2 -2
  16. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +9 -13
  17. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +2 -1
  18. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +3 -3
  19. data/assets/stylesheets/semantic_ui/definitions/views/card.less +3 -0
  20. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +3 -3
  21. data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +7 -4
  22. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +27 -12
  23. data/lib/less/rails/semantic_ui/version.rb +1 -1
  24. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae7af5f161f9cf436de8c0a4a2b2b1b8a8f538a3
4
- data.tar.gz: c1ecc46fb62fcea92e8de9a02a1eb07e5f7897ca
3
+ metadata.gz: 8e31f0a1280d29f7cec4f57dca5c2f9ae67c099c
4
+ data.tar.gz: 0663534de3b0c70ab506132d7fe2e1d9a8f33a44
5
5
  SHA512:
6
- metadata.gz: 013cb7dbb6a031ddc75fb39b0c9be1817cf1d80d88cf6945e86d2354497235263f185ad0365d00e506d9e9900f9309e3f64df3936f4c74df003f88aad5a82218
7
- data.tar.gz: 1d39a800271be04c61c8edcccdc9a46c42b65c400ba2fb6f087d6c34a7544990c2f00f79271b95d2ed9230b34783b6b40806d02df23ee402961751a257e31350
6
+ metadata.gz: cf1f83d11c8003ae0dd74c75d193d440ccb88b18c1a54f1401232641f9c8d2e267739044b36451f5efb15cf43eaf66ad119898559fa58eb3875024b3e798ea95
7
+ data.tar.gz: 062ca4f12057f416256ecfd4e506a20dc6a05bf1ed71f6b44bfa94bfcba3b96ed468573ed1a2ae0179fb2d9ef7117b587941012683a1b91f8de4cdfbd82769ab
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+ sudo: false
2
3
  rvm:
3
4
  - 2.0.0
4
5
  - 2.1.5
@@ -201,7 +201,7 @@ $.fn.form = function(parameters) {
201
201
  isErrored = $fieldGroup.hasClass(className.error)
202
202
  ;
203
203
  if(defaultValue === undefined) {
204
- defaultValue = '';
204
+ return;
205
205
  }
206
206
  if(isErrored) {
207
207
  module.verbose('Resetting error on field', $fieldGroup);
@@ -271,6 +271,9 @@ $.fn.checkbox = function(parameters) {
271
271
  ;
272
272
  return $('input[name="' + name + '"]').closest(selector.checkbox);
273
273
  },
274
+ otherRadios: function() {
275
+ return module.get.radios().not($module);
276
+ },
274
277
  name: function() {
275
278
  return $input.attr('name');
276
279
  }
@@ -314,25 +317,31 @@ $.fn.checkbox = function(parameters) {
314
317
 
315
318
  set: {
316
319
  checked: function() {
320
+ module.verbose('Setting class to checked');
321
+ $module
322
+ .removeClass(className.indeterminate)
323
+ .addClass(className.checked)
324
+ ;
325
+ if( module.is.radio() ) {
326
+ module.uncheckOthers();
327
+ }
317
328
  if(!module.is.indeterminate() && module.is.checked()) {
318
- module.debug('Input is already checked');
329
+ module.debug('Input is already checked, skipping input property change');
319
330
  return;
320
331
  }
321
332
  module.verbose('Setting state to checked', $input[0]);
322
- if( module.is.radio() ) {
323
- module.uncheckOthers();
324
- }
325
333
  $input
326
334
  .prop('indeterminate', false)
327
335
  .prop('checked', true)
328
336
  ;
329
- $module
330
- .removeClass(className.indeterminate)
331
- .addClass(className.checked)
332
- ;
333
337
  module.trigger.change();
334
338
  },
335
339
  unchecked: function() {
340
+ module.verbose('Removing checked class');
341
+ $module
342
+ .removeClass(className.indeterminate)
343
+ .removeClass(className.checked)
344
+ ;
336
345
  if(!module.is.indeterminate() && module.is.unchecked() ) {
337
346
  module.debug('Input is already unchecked');
338
347
  return;
@@ -342,63 +351,63 @@ $.fn.checkbox = function(parameters) {
342
351
  .prop('indeterminate', false)
343
352
  .prop('checked', false)
344
353
  ;
345
- $module
346
- .removeClass(className.indeterminate)
347
- .removeClass(className.checked)
348
- ;
349
354
  module.trigger.change();
350
355
  },
351
356
  indeterminate: function() {
357
+ module.verbose('Setting class to indeterminate');
358
+ $module
359
+ .addClass(className.indeterminate)
360
+ ;
352
361
  if( module.is.indeterminate() ) {
353
- module.debug('Input is already indeterminate');
362
+ module.debug('Input is already indeterminate, skipping input property change');
354
363
  return;
355
364
  }
356
365
  module.debug('Setting state to indeterminate');
357
366
  $input
358
367
  .prop('indeterminate', true)
359
368
  ;
360
- $module
361
- .addClass(className.indeterminate)
362
- ;
363
369
  module.trigger.change();
364
370
  },
365
371
  determinate: function() {
372
+ module.verbose('Removing indeterminate class');
373
+ $module
374
+ .removeClass(className.indeterminate)
375
+ ;
366
376
  if( module.is.determinate() ) {
367
- module.debug('Input is already determinate');
377
+ module.debug('Input is already determinate, skipping input property change');
368
378
  return;
369
379
  }
370
380
  module.debug('Setting state to determinate');
371
381
  $input
372
382
  .prop('indeterminate', false)
373
383
  ;
374
- $module
375
- .removeClass(className.indeterminate)
376
- ;
377
384
  },
378
385
  disabled: function() {
386
+ module.verbose('Setting class to disabled');
387
+ $module
388
+ .addClass(className.disabled)
389
+ ;
379
390
  if( module.is.disabled() ) {
380
- module.debug('Input is already disabled');
391
+ module.debug('Input is already disabled, skipping input property change');
381
392
  return;
382
393
  }
383
394
  module.debug('Setting state to disabled');
384
395
  $input
385
396
  .prop('disabled', 'disabled')
386
397
  ;
387
- $module
388
- .addClass(className.disabled)
389
- ;
390
398
  module.trigger.change();
391
399
  },
392
400
  enabled: function() {
401
+ module.verbose('Removing disabled class');
402
+ $module.removeClass(className.disabled);
393
403
  if( module.is.enabled() ) {
394
- module.debug('Input is already enabled');
404
+ module.debug('Input is already enabled, skipping input property change');
395
405
  return;
396
406
  }
397
407
  module.debug('Setting state to enabled');
398
408
  $input
399
409
  .prop('disabled', false)
400
410
  ;
401
- $module.removeClass(className.disabled);
402
411
  module.trigger.change();
403
412
  },
404
413
  tabbable: function() {
@@ -459,7 +468,7 @@ $.fn.checkbox = function(parameters) {
459
468
 
460
469
  uncheckOthers: function() {
461
470
  var
462
- $radios = module.get.radios()
471
+ $radios = module.get.otherRadios()
463
472
  ;
464
473
  module.debug('Unchecking other radios', $radios);
465
474
  $radios.removeClass(className.checked);
@@ -82,28 +82,8 @@ $.fn.dimmer = function(parameters) {
82
82
 
83
83
  initialize: function() {
84
84
  module.debug('Initializing dimmer', settings);
85
- if(settings.on == 'hover') {
86
- $dimmable
87
- .on('mouseenter' + eventNamespace, module.show)
88
- .on('mouseleave' + eventNamespace, module.hide)
89
- ;
90
- }
91
- else if(settings.on == 'click') {
92
- $dimmable
93
- .on(clickEvent + eventNamespace, module.toggle)
94
- ;
95
- }
96
- if( module.is.page() ) {
97
- module.debug('Setting as a page dimmer', $dimmable);
98
- module.set.pageDimmer();
99
- }
100
85
 
101
- if( module.is.closable() ) {
102
- module.verbose('Adding dimmer close event', $dimmer);
103
- $dimmable
104
- .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)
105
- ;
106
- }
86
+ module.bind.events();
107
87
  module.set.dimmable();
108
88
  module.instantiate();
109
89
  },
@@ -118,14 +98,48 @@ $.fn.dimmer = function(parameters) {
118
98
 
119
99
  destroy: function() {
120
100
  module.verbose('Destroying previous module', $dimmer);
121
- $module
122
- .removeData(moduleNamespace)
123
- ;
101
+ module.unbind.events();
102
+ module.remove.variation();
124
103
  $dimmable
125
104
  .off(eventNamespace)
126
105
  ;
127
106
  },
128
107
 
108
+ bind: {
109
+ events: function() {
110
+ if(settings.on == 'hover') {
111
+ $dimmable
112
+ .on('mouseenter' + eventNamespace, module.show)
113
+ .on('mouseleave' + eventNamespace, module.hide)
114
+ ;
115
+ }
116
+ else if(settings.on == 'click') {
117
+ $dimmable
118
+ .on(clickEvent + eventNamespace, module.toggle)
119
+ ;
120
+ }
121
+ if( module.is.page() ) {
122
+ module.debug('Setting as a page dimmer', $dimmable);
123
+ module.set.pageDimmer();
124
+ }
125
+
126
+ if( module.is.closable() ) {
127
+ module.verbose('Adding dimmer close event', $dimmer);
128
+ $dimmable
129
+ .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)
130
+ ;
131
+ }
132
+ }
133
+ },
134
+
135
+ unbind: {
136
+ events: function() {
137
+ $module
138
+ .removeData(moduleNamespace)
139
+ ;
140
+ }
141
+ },
142
+
129
143
  event: {
130
144
  click: function(event) {
131
145
  module.verbose('Determining if event occured on dimmer', event);
@@ -367,11 +381,11 @@ $.fn.dimmer = function(parameters) {
367
381
  set: {
368
382
  opacity: function(opacity) {
369
383
  var
370
- opacity = settings.opacity || opacity,
371
384
  color = $dimmer.css('background-color'),
372
385
  colorArray = color.split(','),
373
386
  isRGBA = (colorArray && colorArray.length == 4)
374
387
  ;
388
+ opacity = settings.opacity || opacity;
375
389
  if(isRGBA) {
376
390
  colorArray[3] = opacity + ')';
377
391
  color = colorArray.join(',');
@@ -396,6 +410,12 @@ $.fn.dimmer = function(parameters) {
396
410
  },
397
411
  disabled: function() {
398
412
  $dimmer.addClass(className.disabled);
413
+ },
414
+ variation: function(variation) {
415
+ variation = variation || settings.variation;
416
+ if(variation) {
417
+ $dimmer.addClass(variation);
418
+ }
399
419
  }
400
420
  },
401
421
 
@@ -410,6 +430,12 @@ $.fn.dimmer = function(parameters) {
410
430
  },
411
431
  disabled: function() {
412
432
  $dimmer.removeClass(className.disabled);
433
+ },
434
+ variation: function(variation) {
435
+ variation = variation || settings.variation;
436
+ if(variation) {
437
+ $dimmer.removeClass(variation);
438
+ }
413
439
  }
414
440
  },
415
441
 
@@ -267,7 +267,6 @@ $.fn.dropdown = function(parameters) {
267
267
  if( $module.is('select') ) {
268
268
  module.setup.select();
269
269
  module.setup.returnedObject();
270
- console.log($module);
271
270
  }
272
271
  if( module.is.search() && !module.has.search() ) {
273
272
  module.verbose('Adding search input');
@@ -315,7 +314,6 @@ $.fn.dropdown = function(parameters) {
315
314
  .detach()
316
315
  .prependTo($module)
317
316
  ;
318
- console.log($module);
319
317
  }
320
318
  if($input.is('[multiple]')) {
321
319
  module.set.multiple();
@@ -475,7 +473,7 @@ $.fn.dropdown = function(parameters) {
475
473
  if( module.is.searchSelection() ) {
476
474
  // do nothing special yet
477
475
  }
478
- else {
476
+ else if( module.is.single() ) {
479
477
  $module
480
478
  .on('touchstart' + eventNamespace, module.event.test.toggle)
481
479
  ;
@@ -496,6 +494,7 @@ $.fn.dropdown = function(parameters) {
496
494
  $module
497
495
  .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
498
496
  .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
497
+ .on('click' + eventNamespace, selector.icon, module.event.icon.click)
499
498
  .on('click' + eventNamespace, selector.search, module.show)
500
499
  .on('focus' + eventNamespace, selector.search, module.event.search.focus)
501
500
  .on('blur' + eventNamespace, selector.search, module.event.search.blur)
@@ -503,13 +502,14 @@ $.fn.dropdown = function(parameters) {
503
502
  ;
504
503
  if(module.is.multiple()) {
505
504
  $module
506
- .on('click' + eventNamespace, module.event.click)
505
+ .on('click' + eventNamespace, module.event.click)
507
506
  ;
508
507
  }
509
508
  }
510
509
  else {
511
510
  if(settings.on == 'click') {
512
511
  $module
512
+ .on('click' + eventNamespace, selector.icon, module.event.icon.click)
513
513
  .on('click' + eventNamespace, module.event.test.toggle)
514
514
  ;
515
515
  }
@@ -781,7 +781,7 @@ $.fn.dropdown = function(parameters) {
781
781
  $target = $(event.target)
782
782
  ;
783
783
  // focus search
784
- if(($target.is($module) || $target.is($icon)) && !module.is.focusedOnSearch()) {
784
+ if($target.is($module) && !module.is.focusedOnSearch()) {
785
785
  module.focusSearch();
786
786
  }
787
787
  },
@@ -825,6 +825,12 @@ $.fn.dropdown = function(parameters) {
825
825
  }
826
826
  }
827
827
  },
828
+ icon: {
829
+ click: function(event) {
830
+ module.toggle();
831
+ event.stopPropagation();
832
+ }
833
+ },
828
834
  text: {
829
835
  focus: function(event) {
830
836
  activated = true;
@@ -957,7 +963,9 @@ $.fn.dropdown = function(parameters) {
957
963
  ;
958
964
  if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) {
959
965
  if(!settings.useLabels) {
966
+ module.remove.filteredItem();
960
967
  module.remove.searchTerm();
968
+ module.set.scrollPosition($choice);
961
969
  }
962
970
  module.determine.selectAction.call(this, text, value);
963
971
  }
@@ -1096,12 +1104,12 @@ $.fn.dropdown = function(parameters) {
1096
1104
  $visibleItems = ($selectedItem.length > 0)
1097
1105
  ? $selectedItem.siblings(':not(.' + className.filtered +')').andSelf()
1098
1106
  : $menu.children(':not(.' + className.filtered +')'),
1099
- $subMenu = $selectedItem.children(selector.menu),
1100
- $parentMenu = $selectedItem.closest(selector.menu),
1101
- inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),
1102
- hasSubMenu = ($subMenu.length> 0),
1103
- hasSelectedItem = ($selectedItem.length > 0),
1104
- selectedIsVisible = ($selectedItem.not(selector.unselectable).length > 0),
1107
+ $subMenu = $selectedItem.children(selector.menu),
1108
+ $parentMenu = $selectedItem.closest(selector.menu),
1109
+ inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),
1110
+ hasSubMenu = ($subMenu.length> 0),
1111
+ hasSelectedItem = ($selectedItem.length > 0),
1112
+ selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
1105
1113
  $nextItem,
1106
1114
  isSubMenuItem,
1107
1115
  newIndex
@@ -1112,18 +1120,14 @@ $.fn.dropdown = function(parameters) {
1112
1120
 
1113
1121
  // enter (select or open sub-menu)
1114
1122
  if(pressedKey == keys.enter || pressedKey == keys.delimiter) {
1115
-
1116
1123
  if(pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {
1117
1124
  module.verbose('Pressed enter on unselectable category, opening sub menu');
1118
1125
  pressedKey = keys.rightArrow;
1119
1126
  }
1120
- else if(selectedIsVisible) {
1127
+ else if(selectedIsSelectable) {
1121
1128
  module.verbose('Selecting item from keyboard shortcut', $selectedItem);
1122
1129
  module.event.item.click.call($selectedItem, event);
1123
- if(settings.useLabels && module.is.searchSelection()) {
1124
- module.hideAndClear();
1125
- }
1126
- else {
1130
+ if(module.is.searchSelection()) {
1127
1131
  module.remove.searchTerm();
1128
1132
  }
1129
1133
  }
@@ -1267,11 +1271,16 @@ $.fn.dropdown = function(parameters) {
1267
1271
  }
1268
1272
  },
1269
1273
  eventInModule: function(event, callback) {
1274
+ var
1275
+ $target = $(event.target),
1276
+ inDocument = ($target.closest(document.documentElement).length > 0),
1277
+ inModule = ($target.closest($module).length > 0)
1278
+ ;
1270
1279
  callback = $.isFunction(callback)
1271
1280
  ? callback
1272
1281
  : function(){}
1273
1282
  ;
1274
- if( $(event.target).closest($module).length === 0 ) {
1283
+ if(inDocument && !inModule) {
1275
1284
  module.verbose('Triggering event', callback);
1276
1285
  callback();
1277
1286
  return true;
@@ -1283,13 +1292,15 @@ $.fn.dropdown = function(parameters) {
1283
1292
  },
1284
1293
  eventOnElement: function(event, callback) {
1285
1294
  var
1286
- $target = $(event.target)
1295
+ $target = $(event.target),
1296
+ notOnLabel = ($target.closest(selector.siblingLabel).length === 0),
1297
+ notInMenu = ($target.closest($menu).length === 0)
1287
1298
  ;
1288
1299
  callback = $.isFunction(callback)
1289
1300
  ? callback
1290
1301
  : function(){}
1291
1302
  ;
1292
- if($target.closest($menu).length === 0) {
1303
+ if(notOnLabel && notInMenu) {
1293
1304
  module.verbose('Triggering event', callback);
1294
1305
  callback();
1295
1306
  return true;
@@ -1677,6 +1688,7 @@ $.fn.dropdown = function(parameters) {
1677
1688
 
1678
1689
  restore: {
1679
1690
  defaults: function() {
1691
+ module.clear();
1680
1692
  module.restore.defaultText();
1681
1693
  module.restore.defaultValue();
1682
1694
  },
@@ -2013,23 +2025,30 @@ $.fn.dropdown = function(parameters) {
2013
2025
  },
2014
2026
  selectedLetter: function(letter) {
2015
2027
  var
2016
- $selectedItem = $item.filter('.' + className.selected),
2017
- $nextValue = false
2018
- ;
2019
- $item
2020
- .each(function(){
2021
- var
2022
- $choice = $(this),
2023
- text = module.get.choiceText($choice, false),
2024
- firstLetter = String(text).charAt(0).toLowerCase(),
2025
- matchedLetter = letter.toLowerCase()
2026
- ;
2027
- if(firstLetter == matchedLetter) {
2028
- $nextValue = $choice;
2029
- return false;
2030
- }
2031
- })
2028
+ $selectedItem = $item.filter('.' + className.selected),
2029
+ alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),
2030
+ $nextValue = false,
2031
+ $nextItem
2032
2032
  ;
2033
+ // check next of same letter
2034
+ if(alreadySelectedLetter) {
2035
+ $nextItem = $selectedItem.nextAll($item).eq(0);
2036
+ if( module.has.firstLetter($nextItem, letter) ) {
2037
+ $nextValue = $nextItem;
2038
+ }
2039
+ }
2040
+ // check all values
2041
+ if(!$nextValue) {
2042
+ $item
2043
+ .each(function(){
2044
+ if(module.has.firstLetter($(this), letter)) {
2045
+ $nextValue = $(this);
2046
+ return false;
2047
+ }
2048
+ })
2049
+ ;
2050
+ }
2051
+ // set next value
2033
2052
  if($nextValue) {
2034
2053
  module.verbose('Scrolling to next value with letter', letter);
2035
2054
  module.set.scrollPosition($nextValue);
@@ -2147,8 +2166,8 @@ $.fn.dropdown = function(parameters) {
2147
2166
  module.select.nextAvailable($selectedItem);
2148
2167
  }
2149
2168
  else {
2150
- module.add.value(selectedValue, selectedText, $selected);
2151
2169
  module.set.text(module.add.variables(message.count));
2170
+ module.add.value(selectedValue, selectedText, $selected);
2152
2171
  $selected.addClass(className.active);
2153
2172
  }
2154
2173
  }
@@ -2161,8 +2180,8 @@ $.fn.dropdown = function(parameters) {
2161
2180
  if(settings.apiSettings && settings.saveRemoteData) {
2162
2181
  module.save.remoteData(selectedText, selectedValue);
2163
2182
  }
2164
- module.set.value(selectedValue, selectedText, $selected);
2165
2183
  module.set.text(selectedText);
2184
+ module.set.value(selectedValue, selectedText, $selected);
2166
2185
  $selected
2167
2186
  .addClass(className.active)
2168
2187
  .addClass(className.selected)
@@ -2542,9 +2561,25 @@ $.fn.dropdown = function(parameters) {
2542
2561
  search: function() {
2543
2562
  return ($search.length > 0);
2544
2563
  },
2564
+ firstLetter: function($item, letter) {
2565
+ var
2566
+ text,
2567
+ firstLetter
2568
+ ;
2569
+ if(!$item || $item.length === 0 || typeof letter !== 'string') {
2570
+ return false;
2571
+ }
2572
+ text = module.get.choiceText($item, false);
2573
+ letter = letter.toLowerCase();
2574
+ firstLetter = String(text).charAt(0).toLowerCase();
2575
+ return (letter == firstLetter);
2576
+ },
2545
2577
  input: function() {
2546
2578
  return ($input.length > 0);
2547
2579
  },
2580
+ items: function() {
2581
+ return ($item.length > 0);
2582
+ },
2548
2583
  menu: function() {
2549
2584
  return ($menu.length > 0);
2550
2585
  },
@@ -2590,6 +2625,9 @@ $.fn.dropdown = function(parameters) {
2590
2625
  : $menu.transition && $menu.transition('is animating')
2591
2626
  ;
2592
2627
  },
2628
+ disabled: function() {
2629
+ $module.hasClass(className.disabled);
2630
+ },
2593
2631
  focused: function() {
2594
2632
  return (document.activeElement === $module[0]);
2595
2633
  },
@@ -2701,7 +2739,7 @@ $.fn.dropdown = function(parameters) {
2701
2739
  return (hasTouch || settings.on == 'click');
2702
2740
  },
2703
2741
  show: function() {
2704
- return !$module.hasClass(className.disabled) && $item.length > 0;
2742
+ return !module.is.disabled() && (module.has.items() || module.has.message());
2705
2743
  },
2706
2744
  useAPI: function() {
2707
2745
  return $.fn.api !== undefined;
@@ -2811,8 +2849,11 @@ $.fn.dropdown = function(parameters) {
2811
2849
  },
2812
2850
 
2813
2851
  hideAndClear: function() {
2852
+ module.remove.searchTerm();
2853
+ if( module.has.maxSelections() ) {
2854
+ return;
2855
+ }
2814
2856
  if(module.has.search()) {
2815
- module.remove.searchTerm();
2816
2857
  module.hide(function() {
2817
2858
  module.remove.filteredItem();
2818
2859
  });
@@ -687,7 +687,7 @@ $.fn.popup = function(parameters) {
687
687
  popup = calculations.popup;
688
688
  parent = calculations.parent;
689
689
 
690
- if(target.top === 0 && target.left === 0) {
690
+ if(target.width === 0 && target.height === 0) {
691
691
  module.debug('Popup target is hidden, no action taken');
692
692
  return false;
693
693
  }
@@ -117,6 +117,7 @@ $.fn.progress = function(parameters) {
117
117
  if(data.value) {
118
118
  module.debug('Current value set from metadata', data.value);
119
119
  module.set.value(data.value);
120
+ module.set.progress(data.value);
120
121
  }
121
122
  },
122
123
  settings: function() {
@@ -719,7 +720,7 @@ $.fn.progress.settings = {
719
720
  name : 'Progress',
720
721
  namespace : 'progress',
721
722
 
722
- debug : true,
723
+ debug : false,
723
724
  verbose : false,
724
725
  performance : true,
725
726
 
@@ -440,9 +440,12 @@ $.fn.tab = function(parameters) {
440
440
  var
441
441
  $tab = module.get.tabElement(tabPath),
442
442
  apiSettings = {
443
- dataType : 'html',
444
- on : 'now',
445
- cache : 'local',
443
+ dataType : 'html',
444
+ on : 'now',
445
+ cache : settings.alwaysRefresh,
446
+ headers : {
447
+ 'X-Remote': true
448
+ },
446
449
  onSuccess : function(response) {
447
450
  module.cache.add(fullTabPath, response);
448
451
  module.update.content(tabPath, response);
@@ -486,12 +489,9 @@ $.fn.tab = function(parameters) {
486
489
  module.debug('Content is already loading', fullTabPath);
487
490
  }
488
491
  else if($.api !== undefined) {
489
- requestSettings = $.extend(true, {
490
- headers: {
491
- 'X-Remote': true
492
- }
493
- }, settings.apiSettings, apiSettings);
492
+ requestSettings = $.extend(true, {}, settings.apiSettings, apiSettings);
494
493
  module.debug('Retrieving remote content', fullTabPath, requestSettings);
494
+ module.set.loading(tabPath);
495
495
  $tab.api(requestSettings);
496
496
  }
497
497
  else {
@@ -614,7 +614,7 @@ $.fn.transition = function() {
614
614
  },
615
615
  userStyle: function(style) {
616
616
  style = style || $module.attr('style') || '';
617
- return style.replace(/display.*?;/, '');;
617
+ return style.replace(/display.*?;/, '');
618
618
  },
619
619
  transitionExists: function(animation) {
620
620
  return $.fn.transition.exists[animation];
@@ -59,7 +59,7 @@
59
59
  clear: both;
60
60
  margin: @fieldMargin;
61
61
  }
62
- .ui.form .field .field,
62
+
63
63
  .ui.form .field:last-child,
64
64
  .ui.form .fields:last-child .field {
65
65
  margin-bottom: 0em;
@@ -508,6 +508,7 @@ Floated Menu / Item
508
508
 
509
509
  .ui.vertical.menu {
510
510
  display: block;
511
+ flex-direction: column;
511
512
  background: @verticalBackground;
512
513
  box-shadow: @verticalBoxShadow;
513
514
  }
@@ -1540,6 +1541,9 @@ Floated Menu / Item
1540
1541
  margin: 0em;
1541
1542
  vertical-align: middle;
1542
1543
  }
1544
+ .ui.compact.vertical.menu {
1545
+ display: inline-block;
1546
+ }
1543
1547
  .ui.compact.menu .item:last-child {
1544
1548
  border-radius: 0em @borderRadius @borderRadius 0em;
1545
1549
  }
@@ -1632,13 +1636,13 @@ Floated Menu / Item
1632
1636
 
1633
1637
  .ui.fixed.menu,
1634
1638
  .ui[class*="top fixed"].menu {
1635
- border-top: none;
1636
1639
  top: 0px;
1637
1640
  left: 0px;
1638
1641
  right: auto;
1639
1642
  bottom: auto;
1640
1643
  }
1641
1644
  .ui[class*="top fixed"].menu {
1645
+ border-top: none;
1642
1646
  border-left: none;
1643
1647
  border-right: none;
1644
1648
  }
@@ -316,7 +316,7 @@
316
316
  .ui.labeled.input > .label {
317
317
  flex: 0 0 auto;
318
318
  margin: 0;
319
- font-size: @medium;
319
+ font-size: @relativeMedium;
320
320
  }
321
321
  .ui.labeled.input > .label:not(.corner) {
322
322
  padding-top: @verticalPadding;
@@ -413,31 +413,31 @@ a.ui.label {
413
413
 
414
414
  padding: @attachedVerticalPadding @attachedHorizontalPadding;
415
415
 
416
- border-radius: @borderRadius @borderRadius 0em 0em;
416
+ border-radius: @attachedCornerBorderRadius @attachedCornerBorderRadius 0em 0em;
417
417
  }
418
418
  .ui.bottom.attached.label {
419
419
  top: auto;
420
420
  bottom: 0em;
421
- border-radius: 0em 0em @borderRadius @borderRadius;
421
+ border-radius: 0em 0em @attachedCornerBorderRadius @attachedCornerBorderRadius;
422
422
  }
423
423
 
424
424
  .ui.top.left.attached.label {
425
425
  width: auto;
426
426
  margin-top: 0em !important;
427
- border-radius: @borderRadius 0em @borderRadius 0em;
427
+ border-radius: @attachedCornerBorderRadius 0em @attachedBorderRadius 0em;
428
428
  }
429
429
 
430
430
  .ui.top.right.attached.label {
431
431
  width: auto;
432
432
  left: auto;
433
433
  right: 0em;
434
- border-radius: 0em @borderRadius 0em @borderRadius;
434
+ border-radius: 0em @attachedCornerBorderRadius 0em @attachedBorderRadius;
435
435
  }
436
436
  .ui.bottom.left.attached.label {
437
437
  width: auto;
438
438
  top: auto;
439
439
  bottom: 0em;
440
- border-radius: 0em @borderRadius 0em @borderRadius;
440
+ border-radius: 0em @attachedBorderRadius 0em @attachedCornerBorderRadius;
441
441
  }
442
442
  .ui.bottom.right.attached.label {
443
443
  top: auto;
@@ -445,7 +445,7 @@ a.ui.label {
445
445
  left: auto;
446
446
  right: 0em;
447
447
  width: auto;
448
- border-radius: @borderRadius 0em @borderRadius 0em;
448
+ border-radius: @attachedBorderRadius 0em @attachedCornerBorderRadius 0em;
449
449
  }
450
450
 
451
451
 
@@ -703,7 +703,7 @@
703
703
  .ui[class*="top attached"].segment {
704
704
  top: @attachedTopOffset;
705
705
  bottom: 0px;
706
- margin-top: @margin;
706
+ margin-top: @verticalMargin;
707
707
  margin-bottom: 0em;
708
708
  border-radius: @borderRadius @borderRadius 0em 0em;
709
709
  }
@@ -716,7 +716,7 @@
716
716
  top: @attachedBottomOffset;
717
717
  bottom: 0px;
718
718
  margin-top: 0em;
719
- margin-bottom: @margin;
719
+ margin-bottom: @verticalMargin;
720
720
  box-shadow: @attachedBottomBoxShadow;
721
721
  border-radius: 0em 0em @borderRadius @borderRadius;
722
722
  }
@@ -75,11 +75,7 @@
75
75
  display: block;
76
76
  padding-left: @labelDistance;
77
77
  outline: none;
78
- }
79
-
80
- .ui.checkbox .box,
81
- .ui.checkbox label {
82
- font-size: @fontSize;
78
+ font-size: @labelFontSize;
83
79
  }
84
80
 
85
81
  .ui.checkbox .box:before,
@@ -213,13 +209,13 @@
213
209
  Indeterminate
214
210
  ---------------*/
215
211
 
216
- .ui.checkbox input:indeterminate ~ .box:before,
217
- .ui.checkbox input:indeterminate ~ label:before {
212
+ .ui.checkbox input[type="checkbox"]:indeterminate ~ .box:before,
213
+ .ui.checkbox input[type="checkbox"]:indeterminate ~ label:before {
218
214
  background: @checkboxIndeterminateBackground;
219
215
  border-color: @checkboxIndeterminateBorderColor;
220
216
  }
221
- .ui.checkbox input:indeterminate ~ .box:after,
222
- .ui.checkbox input:indeterminate ~ label:after {
217
+ .ui.checkbox input[type="checkbox"]:indeterminate ~ .box:after,
218
+ .ui.checkbox input[type="checkbox"]:indeterminate ~ label:after {
223
219
  opacity: @checkboxIndeterminateCheckOpacity;
224
220
  color: @checkboxIndeterminateCheckColor;
225
221
  }
@@ -228,10 +224,10 @@
228
224
  Active Focus
229
225
  ---------------*/
230
226
 
231
- .ui.checkbox input[type="radio"]:indeterminate:focus ~ .box:before,
232
- .ui.checkbox input[type="radio"]:indeterminate:focus ~ label:before,
233
- .ui.checkbox input[type="radio"]:checked:focus ~ .box:before,
234
- .ui.checkbox input[type="radio"]:checked:focus ~ label:before {
227
+ .ui.checkbox input[type="checkbox"]:indeterminate:focus ~ .box:before,
228
+ .ui.checkbox input[type="checkbox"]:indeterminate:focus ~ label:before,
229
+ .ui.checkbox input[type="checkbox"]:checked:focus ~ .box:before,
230
+ .ui.checkbox input[type="checkbox"]:checked:focus ~ label:before {
235
231
  background: @checkboxFocusedBackground;
236
232
  border-color: @checkboxFocusedBorderColor;
237
233
  }
@@ -37,10 +37,11 @@
37
37
  cursor: pointer;
38
38
  position: relative;
39
39
  display: inline-block;
40
- tap-highlight-color: rgba(0, 0, 0, 0);
41
40
  outline: none;
42
41
  text-align: left;
43
42
  transition: @transition;
43
+
44
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
44
45
  }
45
46
 
46
47
  /*******************************
@@ -382,9 +382,9 @@
382
382
  }
383
383
 
384
384
  @media only screen and (max-width : @computerBreakpoint) {
385
- .ui.scrolling.modal {
386
- margin-top: @mobileScrollingMargin;
387
- margin-bottom: @mobileScrollingMargin;
385
+ .modals.dimmer .ui.scrolling.modal {
386
+ margin-top: @mobileScrollingMargin !important;
387
+ margin-bottom: @mobileScrollingMargin !important;
388
388
  }
389
389
  }
390
390
 
@@ -435,6 +435,9 @@
435
435
  Centered
436
436
  --------------------*/
437
437
 
438
+ .ui.centered.cards {
439
+ justify-content: center;
440
+ }
438
441
  .ui.centered.card {
439
442
  margin-left: auto;
440
443
  margin-right: auto;
@@ -90,8 +90,8 @@
90
90
  @arrowTransition: background @defaultDuration @defaultEasing;
91
91
  @arrowZIndex: 2;
92
92
 
93
- @arrowHoverColor: #F4F4F4;
94
- @arrowActiveColor: #F4F4F4;
93
+ @arrowHoverColor: #F2F2F2;
94
+ @arrowActiveColor: @arrowHoverColor;
95
95
  @arrowActiveHoverColor: @arrowActiveColor;
96
96
 
97
97
  @arrowVerticalHoverColor: @arrowHoverColor;
@@ -370,7 +370,7 @@
370
370
  /* Inverted */
371
371
  @invertedBackground: @black;
372
372
  @invertedBoxShadow: none;
373
- @invertedBorder: 1px solid transparent;
373
+ @invertedBorder: 0px solid transparent;
374
374
  @invertedHeaderBackground: transparent;
375
375
 
376
376
  @invertedItemBackground: transparent;
@@ -172,6 +172,9 @@
172
172
  @attachedVerticalPadding: 0.75em;
173
173
  @attachedHorizontalPadding: 1em;
174
174
 
175
+ @attachedCornerBorderRadius: @3px;
176
+ @attachedBorderRadius: @borderRadius;
177
+
175
178
  /* Corner */
176
179
  @cornerSizeRatio: 1;
177
180
  @cornerTransition: color @labelTransitionDuration @labelTransitionEasing;
@@ -221,7 +224,7 @@
221
224
  @tiny : @10px;
222
225
  @small : @11px;
223
226
  @medium : @12px;
224
- @large : @medium;
225
- @big : @large;
226
- @huge : @big;
227
- @massive : @huge;
227
+ @large : @absoluteMedium;
228
+ @big : @absoluteBig;
229
+ @huge : @absoluteHuge;
230
+ @massive : @absoluteMassive;
@@ -83,18 +83,18 @@
83
83
  --------------------*/
84
84
 
85
85
  /*
86
- This ensures all relative sizes are exact pixels
87
- expressed in em
86
+ Sizes are all expressed in terms of 14px/em (default em)
87
+ This ensures these "ratios" remain constant despite changes in EM
88
88
  */
89
89
 
90
- @miniSize : (10 / unit(@emSize));
91
- @tinySize : (12 / unit(@emSize));
92
- @smallSize : (13 / unit(@emSize));
93
- @mediumSize : (14 / unit(@emSize));
94
- @largeSize : (16 / unit(@emSize));
95
- @bigSize : (18 / unit(@emSize));
96
- @hugeSize : (20 / unit(@emSize));
97
- @massiveSize : (24 / unit(@emSize));
90
+ @miniSize : (10 / 14);
91
+ @tinySize : (12 / 14);
92
+ @smallSize : (13 / 14);
93
+ @mediumSize : (14 / 14);
94
+ @largeSize : (16 / 14);
95
+ @bigSize : (18 / 14);
96
+ @hugeSize : (20 / 14);
97
+ @massiveSize : (24 / 14);
98
98
 
99
99
 
100
100
  /*-------------------
@@ -330,7 +330,10 @@
330
330
  Em Sizes
331
331
  --------------------*/
332
332
 
333
- /* Exact pixel values expressed in em */
333
+ /*
334
+ This rounds @size values to the closest pixel then expresses that value in (r)em.
335
+ This ensures all size values round to exact pixels
336
+ */
334
337
  @mini : unit( round(@miniSize * @emSize) / @emSize, rem);
335
338
  @tiny : unit( round(@tinySize * @emSize) / @emSize, rem);
336
339
  @small : unit( round(@smallSize * @emSize) / @emSize, rem);
@@ -340,6 +343,7 @@
340
343
  @huge : unit( round(@hugeSize * @emSize) / @emSize, rem);
341
344
  @massive : unit( round(@massiveSize * @emSize) / @emSize, rem);
342
345
 
346
+ /* em */
343
347
  @relativeMini : unit( round(@miniSize * @emSize) / @emSize, em);
344
348
  @relativeTiny : unit( round(@tinySize * @emSize) / @emSize, em);
345
349
  @relativeSmall : unit( round(@smallSize * @emSize) / @emSize, em);
@@ -349,13 +353,24 @@
349
353
  @relativeHuge : unit( round(@hugeSize * @emSize) / @emSize, em);
350
354
  @relativeMassive : unit( round(@massiveSize * @emSize) / @emSize, em);
351
355
 
356
+ /* rem */
357
+ @absoluteMini : unit( round(@miniSize * @emSize) / @emSize, rem);
358
+ @absoluteTiny : unit( round(@tinySize * @emSize) / @emSize, rem);
359
+ @absoluteSmall : unit( round(@smallSize * @emSize) / @emSize, rem);
360
+ @absoluteMedium : unit( round(@mediumSize * @emSize) / @emSize, rem);
361
+ @absoluteLarge : unit( round(@largeSize * @emSize) / @emSize, rem);
362
+ @absoluteBig : unit( round(@bigSize * @emSize) / @emSize, rem);
363
+ @absoluteHuge : unit( round(@hugeSize * @emSize) / @emSize, rem);
364
+ @absoluteMassive : unit( round(@massiveSize * @emSize) / @emSize, rem);
365
+
352
366
 
353
367
  /*-------------------
354
368
  Exact Pixel Values
355
369
  --------------------*/
356
370
  /*
357
371
  These are used to specify exact pixel values in em
358
- for things like borders
372
+ for things like borders that remain constantly
373
+ sized as emSize adjusts
359
374
 
360
375
  Since there are many more sizes than names for sizes,
361
376
  these are named by their original pixel values.
@@ -1,7 +1,7 @@
1
1
  module Less
2
2
  module Rails
3
3
  module SemanticUI
4
- VERSION = '2.0.0.0'
4
+ VERSION = '2.0.2.0'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: less-rails-semantic_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.0
4
+ version: 2.0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Dobryakov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-06 00:00:00.000000000 Z
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: less-rails