less-rails-semantic_ui 2.0.0.0 → 2.0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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