less-rails-semantic_ui 1.9.2.0 → 1.10.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9bedc8402a324594fbae1abc8ae2db352f2f38cc
4
- data.tar.gz: 609f4c838f8c5d4248df5574d43731af89f77a8b
3
+ metadata.gz: a18cfb699e451035985f4460eb332d1be65b8720
4
+ data.tar.gz: b822c2ad0f3a5234362f1a791cf6050a63be95d7
5
5
  SHA512:
6
- metadata.gz: 6590dd65b4a91f5c38653cafff8992fff6ec83c9de7dbaa07b903978bd1f43041d44d54c2cd038638d0f1c29c759afa6198d315a23380e4b8c3abc5d66969199
7
- data.tar.gz: e5b423f75b1d9b5fe55052eaf4905565421ca176b05f6f425982256eeaa72a7b09945b33320579d233f73465476911eb833573b4223aee7e9f4a87e1c44fb65e
6
+ metadata.gz: d6453c8c71dd2d68f5192988423564989c1f012eafae84357cad23a3b3999f29a44fd612f30ceacb63b3bfa3ba836377eaf38e6db3d09bd5c7030dc3096d557b
7
+ data.tar.gz: 54fbe7ecd54a6985c97561920a119bfddb4344d222b99fb03b7b30f8a3102690d025f56ec36c6bd49a89ee43c1fd46510e934ab4e9728275a401a893f1935aab
@@ -135,13 +135,17 @@ $.api = $.fn.api = function(parameters) {
135
135
  }
136
136
 
137
137
  // call beforesend and get any settings changes
138
- requestSettings = module.get.settings();
138
+ requestSettings = module.get.settings();
139
139
 
140
- // check if beforesend cancelled request
140
+ // check if before send cancelled request
141
141
  if(requestSettings === false) {
142
+ module.cancelled = true;
142
143
  module.error(error.beforeSend);
143
144
  return;
144
145
  }
146
+ else {
147
+ module.cancelled = false;
148
+ }
145
149
 
146
150
  if(settings.url) {
147
151
  // override with url if specified
@@ -180,7 +184,9 @@ $.api = $.fn.api = function(parameters) {
180
184
  complete : function() {}
181
185
  });
182
186
 
183
- module.verbose('Creating AJAX request with settings', ajaxSettings);
187
+ module.debug('Querying URL', ajaxSettings.url);
188
+ module.debug('Sending data', data, ajaxSettings.method);
189
+ module.verbose('Using AJAX settings', ajaxSettings);
184
190
 
185
191
  if( module.is.loading() ) {
186
192
  // throttle additional requests
@@ -210,6 +216,9 @@ $.api = $.fn.api = function(parameters) {
210
216
  },
211
217
 
212
218
  was: {
219
+ cancelled: function() {
220
+ return (module.cancelled || false);
221
+ },
213
222
  succesful: function() {
214
223
  return (module.request && module.request.state() == 'resolved');
215
224
  },
@@ -383,7 +392,7 @@ $.api = $.fn.api = function(parameters) {
383
392
 
384
393
  // if http status code returned and json returned error, look for it
385
394
  if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') {
386
- module.error(error.statusMessage + httpMessage);
395
+ module.error(error.statusMessage + httpMessage, ajaxSettings.url);
387
396
  }
388
397
  else {
389
398
  if(status == 'error' && settings.dataType == 'json') {
@@ -767,7 +776,7 @@ $.api.settings = {
767
776
  namespace : 'api',
768
777
 
769
778
  debug : true,
770
- verbose : true,
779
+ verbose : false,
771
780
  performance : true,
772
781
 
773
782
  // event binding
@@ -969,10 +969,18 @@ $.fn.form.settings = {
969
969
  return ($(this).filter(':checked').length > 0);
970
970
  },
971
971
 
972
- // value contains (text)
972
+ // value contains text (insensitive)
973
973
  contains: function(value, text) {
974
+ // escape regex characters
974
975
  text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
975
- return (value.search(text) !== -1);
976
+ return (value.search( new RegExp(text, 'i') ) !== -1);
977
+ },
978
+
979
+ // value contains text (case sensitive)
980
+ containsExactly: function(value, text) {
981
+ // escape regex characters
982
+ text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
983
+ return (value.search( new RegExp(text) ) !== -1);
976
984
  },
977
985
 
978
986
  // is most likely an email
@@ -1020,8 +1028,21 @@ $.fn.form.settings = {
1020
1028
  );
1021
1029
  },
1022
1030
 
1023
- // is exactly value
1031
+ // is value (case insensitive)
1024
1032
  is: function(value, text) {
1033
+ text = (typeof text == 'string')
1034
+ ? text.toLowerCase()
1035
+ : text
1036
+ ;
1037
+ value = (typeof value == 'string')
1038
+ ? value.toLowerCase()
1039
+ : value
1040
+ ;
1041
+ return (value == text);
1042
+ },
1043
+
1044
+ // is value
1045
+ isExactly: function(value, text) {
1025
1046
  return (value == text);
1026
1047
  },
1027
1048
 
@@ -1063,8 +1084,21 @@ $.fn.form.settings = {
1063
1084
  ;
1064
1085
  },
1065
1086
 
1066
- // value is not exactly notValue
1087
+ // value is not value (case insensitive)
1067
1088
  not: function(value, notValue) {
1089
+ value = (typeof value == 'string')
1090
+ ? value.toLowerCase()
1091
+ : value
1092
+ ;
1093
+ notValue = (typeof notValue == 'string')
1094
+ ? notValue.toLowerCase()
1095
+ : notValue
1096
+ ;
1097
+ return (value != notValue);
1098
+ },
1099
+
1100
+ // value is not value (case sensitive)
1101
+ notExactly: function(value, notValue) {
1068
1102
  return (value != notValue);
1069
1103
  },
1070
1104
 
@@ -192,13 +192,20 @@ $.fn.state = function(parameters) {
192
192
  toggle: {
193
193
  state: function() {
194
194
  var
195
- apiRequest
195
+ apiRequest,
196
+ requestCancelled
196
197
  ;
197
198
  if( module.allows('active') && module.is.enabled() ) {
198
199
  module.refresh();
199
200
  if($.fn.api !== undefined) {
200
- apiRequest = $module.api('get request');
201
- if(apiRequest) {
201
+ apiRequest = $module.api('get request');
202
+ requestCancelled = $module.api('was cancelled');
203
+ if( requestCancelled ) {
204
+ module.debug('API Request cancelled by beforesend');
205
+ settings.activateTest = function(){ return false; };
206
+ settings.deactivateTest = function(){ return false; };
207
+ }
208
+ else if(apiRequest) {
202
209
  module.listenTo(apiRequest);
203
210
  return;
204
211
  }
@@ -230,11 +237,6 @@ $.fn.state = function(parameters) {
230
237
  })
231
238
  ;
232
239
  }
233
- // xhr exists but set to false, beforeSend killed the xhr
234
- else {
235
- settings.activateTest = function(){ return false; };
236
- settings.deactivateTest = function(){ return false; };
237
- }
238
240
  },
239
241
 
240
242
  // checks whether active/inactive state can be given
@@ -394,7 +396,7 @@ $.fn.state = function(parameters) {
394
396
  }
395
397
  }
396
398
  else {
397
- module.debug('Text is already sane, ignoring update', text);
399
+ module.debug('Text is already set, ignoring update', text);
398
400
  }
399
401
  }
400
402
  },
@@ -579,37 +581,37 @@ $.fn.state = function(parameters) {
579
581
  $.fn.state.settings = {
580
582
 
581
583
  // module info
582
- name : 'State',
584
+ name : 'State',
583
585
 
584
586
  // debug output
585
- debug : false,
587
+ debug : false,
586
588
 
587
589
  // verbose debug output
588
- verbose : true,
590
+ verbose : true,
589
591
 
590
592
  // namespace for events
591
- namespace : 'state',
593
+ namespace : 'state',
592
594
 
593
595
  // debug data includes performance
594
- performance: true,
596
+ performance : true,
595
597
 
596
598
  // callback occurs on state change
597
- onActivate : function() {},
598
- onDeactivate : function() {},
599
- onChange : function() {},
599
+ onActivate : function() {},
600
+ onDeactivate : function() {},
601
+ onChange : function() {},
600
602
 
601
603
  // state test functions
602
604
  activateTest : function() { return true; },
603
605
  deactivateTest : function() { return true; },
604
606
 
605
607
  // whether to automatically map default states
606
- automatic : true,
608
+ automatic : true,
607
609
 
608
610
  // activate / deactivate changes all elements instantiated at same time
609
- sync : false,
611
+ sync : false,
610
612
 
611
613
  // default flash text duration, used for temporarily changing text of an element
612
- flashDuration : 1000,
614
+ flashDuration : 1000,
613
615
 
614
616
  // selector filter
615
617
  filter : {
@@ -621,7 +623,8 @@ $.fn.state.settings = {
621
623
 
622
624
  // error
623
625
  error: {
624
- method : 'The method you called is not defined.'
626
+ beforeSend : 'The before send function has cancelled state change',
627
+ method : 'The method you called is not defined.'
625
628
  },
626
629
 
627
630
  // metadata
@@ -303,12 +303,12 @@ $.fn.search = function(parameters) {
303
303
  var
304
304
  result = false
305
305
  ;
306
- value = value || module.get.value();
306
+ value = value || module.get.value();
307
307
  results = results || module.get.results();
308
308
  if(settings.type === 'category') {
309
- module.debug('Finding result from category results', value);
309
+ module.debug('Finding result that matches', value);
310
310
  $.each(results, function(index, category) {
311
- if(category.results !== undefined) {
311
+ if($.isArray(category.results)) {
312
312
  result = module.search.object(value, category.results)[0];
313
313
  if(result.length > 0) {
314
314
  return true;
@@ -334,6 +334,7 @@ $.fn.search = function(parameters) {
334
334
  value: function(value) {
335
335
  module.verbose('Setting search input value', value);
336
336
  $prompt.val(value);
337
+ module.query();
337
338
  },
338
339
  buttonPressed: function() {
339
340
  $searchButton.addClass(className.pressed);
@@ -617,7 +618,9 @@ $.fn.search = function(parameters) {
617
618
  if(isProperObject || isProperArray ) {
618
619
  if(settings.maxResults > 0) {
619
620
  if(isProperObject) {
620
- module.error(error.maxResults);
621
+ if(settings.type == 'standard') {
622
+ module.error(error.maxResults);
623
+ }
621
624
  }
622
625
  else {
623
626
  response.results = response.results.slice(0, settings.maxResults);
@@ -365,11 +365,20 @@ $.fn.sidebar = function(parameters) {
365
365
  settings.transition = 'overlay';
366
366
  }
367
367
  module.refresh();
368
- if(module.othersActive() && module.get.transition() !== 'overlay') {
368
+ if(module.othersActive()) {
369
369
  module.debug('Other sidebars currently visible');
370
- settings.transition = 'overlay';
371
370
  if(settings.exclusive) {
372
- module.hideOthers();
371
+ // if not overlay queue animation after hide
372
+ if(settings.transition != 'overlay') {
373
+ module.hideOthers(module.show);
374
+ return;
375
+ }
376
+ else {
377
+ module.hideOthers();
378
+ }
379
+ }
380
+ else {
381
+ settings.transition = 'overlay';
373
382
  }
374
383
  }
375
384
  animateMethod(function() {
@@ -422,8 +431,7 @@ $.fn.sidebar = function(parameters) {
422
431
  sidebarCount = $otherSidebars.length,
423
432
  callbackCount = 0
424
433
  ;
425
- callback = callback || function(){};
426
-
434
+ callback = callback || function(){};
427
435
  $otherSidebars
428
436
  .sidebar('hide', function() {
429
437
  callbackCount++;
@@ -75,10 +75,7 @@ $.fn.tab = function(parameters) {
75
75
 
76
76
  // set up automatic routing
77
77
  if(settings.auto) {
78
- module.verbose('Setting up automatic tab retrieval from server');
79
- settings.apiSettings = {
80
- url: (settings.path || '') + '/{$tab}'
81
- };
78
+ module.set.auto();
82
79
  }
83
80
 
84
81
  // attach events if navigation wasn't set to window
@@ -238,6 +235,22 @@ $.fn.tab = function(parameters) {
238
235
  },
239
236
 
240
237
  set: {
238
+ auto: function() {
239
+ var
240
+ url = (typeof settings.path == 'string')
241
+ ? settings.path.replace(/\/$/, '') + '/{$tab}'
242
+ : '/{$tab}'
243
+ ;
244
+ module.verbose('Setting up automatic tab retrieval from server', url);
245
+ if($.isPlainObject(settings.apiSettings)) {
246
+ settings.apiSettings.url = url;
247
+ }
248
+ else {
249
+ settings.apiSettings = {
250
+ url: url
251
+ };
252
+ }
253
+ },
241
254
  state: function(state) {
242
255
  $.address.value(state);
243
256
  }
@@ -370,22 +383,22 @@ $.fn.tab = function(parameters) {
370
383
  cachedContent = module.cache.read(fullTabPath);
371
384
 
372
385
 
386
+ module.activate.tab(tabPath);
387
+
373
388
  if(settings.cache && cachedContent) {
374
389
  module.debug('Showing existing content', fullTabPath);
375
390
  module.content.update(tabPath, cachedContent);
376
- module.activate.tab(tabPath);
377
391
  settings.onTabLoad.call($tab, tabPath, parameterArray, historyEvent);
378
392
  }
379
393
  else if(existingRequest) {
380
394
  module.debug('Content is already loading', fullTabPath);
381
- $tab
382
- .addClass(className.loading)
383
- ;
395
+ $tab.addClass(className.loading);
384
396
  }
385
397
  else if($.api !== undefined) {
386
- requestSettings = $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings);
398
+ requestSettings = $.extend(true, {
399
+ headers: { 'X-Remote': true }
400
+ }, settings.apiSettings, apiSettings);
387
401
  module.debug('Retrieving remote content', fullTabPath, requestSettings);
388
- console.log(existingRequest, requestSettings, cachedContent);
389
402
  $tab.api( requestSettings );
390
403
  }
391
404
  else {
@@ -35,7 +35,7 @@ $.fn.transition = function() {
35
35
  returnedValue
36
36
  ;
37
37
  $allModules
38
- .each(function() {
38
+ .each(function(index) {
39
39
  var
40
40
  $module = $(this),
41
41
  element = this,
@@ -86,7 +86,12 @@ $.fn.transition = function() {
86
86
  // method not invoked, lets run an animation
87
87
  if(methodInvoked === false) {
88
88
  module.verbose('Converted arguments into settings object', settings);
89
- module.animate();
89
+ if(settings.interval) {
90
+ module.delay(settings.animate);
91
+ }
92
+ else {
93
+ module.animate();
94
+ }
90
95
  module.instantiate();
91
96
  }
92
97
  },
@@ -132,6 +137,24 @@ $.fn.transition = function() {
132
137
  ;
133
138
  },
134
139
 
140
+ delay: function(interval) {
141
+ var
142
+ isReverse = (settings.reverse === true),
143
+ shouldReverse = (settings.reverse == 'auto' && module.get.direction() == className.outward),
144
+ delay
145
+ ;
146
+ interval = (typeof interval !== undefined)
147
+ ? interval
148
+ : settings.interval
149
+ ;
150
+ delay = (isReverse || shouldReverse)
151
+ ? ($allModules.length - index) * settings.interval
152
+ : index * settings.interval
153
+ ;
154
+ module.debug('Delaying animation by', delay);
155
+ setTimeout(module.animate, delay);
156
+ },
157
+
135
158
  animate: function(overrideSettings) {
136
159
  settings = overrideSettings || settings;
137
160
  if(!module.is.supported()) {
@@ -181,7 +204,7 @@ $.fn.transition = function() {
181
204
  ;
182
205
  },
183
206
 
184
- complete: function () {
207
+ complete: function (event) {
185
208
  module.verbose('CSS animation complete', settings.animation);
186
209
  module.remove.animationEndCallback();
187
210
  module.remove.failSafe();
@@ -319,12 +342,12 @@ $.fn.transition = function() {
319
342
  .addClass(className.transition)
320
343
  .addClass(className.hidden)
321
344
  ;
322
- if($module.css('display') !== 'none') {
323
- module.verbose('Overriding default display to hide element');
324
- $module
325
- .css('display', 'none')
326
- ;
327
- }
345
+ }
346
+ if($module.css('display') !== 'none') {
347
+ module.verbose('Overriding default display to hide element');
348
+ $module
349
+ .css('display', 'none')
350
+ ;
328
351
  }
329
352
  },
330
353
  visible: function() {
@@ -346,7 +369,7 @@ $.fn.transition = function() {
346
369
  conditions: function() {
347
370
  var
348
371
  clasName = $module.attr('class') || false,
349
- style = $module.attr('style') || ''
372
+ style = $module.attr('style') || ''
350
373
  ;
351
374
  $module.removeClass(settings.animation);
352
375
  module.remove.direction();
@@ -371,6 +394,7 @@ $.fn.transition = function() {
371
394
  }
372
395
  if(module.cache.style) {
373
396
  module.verbose('Restoring original style attribute', module.cache.style);
397
+ console.log('restoring cache', module.cache.style);
374
398
  $module.attr('style', module.cache.style);
375
399
  }
376
400
  if(module.is.looping()) {
@@ -385,7 +409,9 @@ $.fn.transition = function() {
385
409
  var
386
410
  duration = module.get.duration()
387
411
  ;
388
- module.timer = setTimeout(module.complete, duration + 100);
412
+ module.timer = setTimeout(function() {
413
+ $module.trigger(animationEnd);
414
+ }, duration + settings.failSafeDelay);
389
415
  module.verbose('Adding fail safe timer', module.timer);
390
416
  }
391
417
  },
@@ -485,6 +511,31 @@ $.fn.transition = function() {
485
511
  }
486
512
  return $.fn.transition.settings;
487
513
  },
514
+ direction: function(animation) {
515
+ // quickest manually specified direction
516
+ animation = animation || settings.animation;
517
+ if(typeof animation === 'string') {
518
+ animation = animation.split(' ');
519
+ $.each(animation, function(index, word){
520
+ if(word === className.inward) {
521
+ return className.inward;
522
+ }
523
+ else if(word === className.outward) {
524
+ return className.outward;
525
+ }
526
+ });
527
+ }
528
+ // slower backup
529
+ if( !module.can.transition() ) {
530
+ return 'static';
531
+ }
532
+ if($module.is(':visible') && !module.is.hidden()) {
533
+ return className.outward;
534
+ }
535
+ else {
536
+ return className.inward;
537
+ }
538
+ },
488
539
  duration: function(duration) {
489
540
  duration = duration || settings.duration;
490
541
  if(duration === false) {
@@ -876,41 +927,50 @@ $.fn.transition.exists = {};
876
927
  $.fn.transition.settings = {
877
928
 
878
929
  // module info
879
- name : 'Transition',
930
+ name : 'Transition',
880
931
 
881
932
  // debug content outputted to console
882
- debug : false,
933
+ debug : false,
883
934
 
884
935
  // verbose debug output
885
- verbose : true,
936
+ verbose : true,
886
937
 
887
938
  // performance data output
888
- performance : true,
939
+ performance : true,
889
940
 
890
941
  // event namespace
891
- namespace : 'transition',
942
+ namespace : 'transition',
892
943
 
893
- // animation complete event
894
- onStart : function() {},
895
- onComplete : function() {},
896
- onShow : function() {},
897
- onHide : function() {},
944
+ // delay between animations in group
945
+ interval : 0,
946
+
947
+ // whether group animations should be reversed
948
+ reverse : 'auto',
949
+
950
+ // animation callback event
951
+ onStart : function() {},
952
+ onComplete : function() {},
953
+ onShow : function() {},
954
+ onHide : function() {},
898
955
 
899
956
  // whether timeout should be used to ensure callback fires in cases animationend does not
900
- useFailSafe : true,
957
+ useFailSafe : true,
958
+
959
+ // delay in ms for fail safe
960
+ failSafeDelay : 100,
901
961
 
902
962
  // whether EXACT animation can occur twice in a row
903
- allowRepeats : false,
963
+ allowRepeats : false,
904
964
 
905
965
  // Override final display type on visible
906
- displayType : false,
966
+ displayType : false,
907
967
 
908
968
  // animation duration
909
- animation : 'fade',
910
- duration : false,
969
+ animation : 'fade',
970
+ duration : false,
911
971
 
912
972
  // new animations will occur after previous ones
913
- queue : true,
973
+ queue : true,
914
974
 
915
975
  metadata : {
916
976
  displayType: 'display'
@@ -246,10 +246,10 @@
246
246
  white-space: nowrap;
247
247
  }
248
248
  .ui.form .inline.field .prompt {
249
- margin: @validationMargin;
249
+ margin: @inlineValidationMargin;
250
250
  }
251
251
  .ui.form .inline.field .prompt:before {
252
- margin-top: @validationArrowOffset;
252
+ margin-top: @inlineValidationArrowOffset;
253
253
  bottom: auto;
254
254
  right: auto;
255
255
  top: 50%;
@@ -1673,8 +1673,8 @@
1673
1673
  .ui.stackable.grid {
1674
1674
  display: block !important;
1675
1675
  width: auto;
1676
- margin-left: -(@stackableGutter / 2) !important;
1677
- margin-right: -(@stackableGutter / 2) !important;
1676
+ margin-left: 0em !important;
1677
+ margin-right: 0em !important;
1678
1678
  padding: 0em;
1679
1679
  }
1680
1680
  .ui.stackable.grid > .row > .wide.column,
@@ -1695,9 +1695,11 @@
1695
1695
  padding: 0em;
1696
1696
  }
1697
1697
 
1698
- .ui.stackable.page.grid {
1699
- margin-left: 0em !important;
1700
- margin-right: 0em !important;
1698
+ /* Don't pad inside segment or nested grid */
1699
+ .ui.grid .ui.stackable.grid,
1700
+ .ui.segment:not(.vertical) .ui.stackable.page.grid {
1701
+ margin-left: -(@stackableGutter / 2) !important;
1702
+ margin-right: -(@stackableGutter / 2) !important;
1701
1703
  }
1702
1704
 
1703
1705
  /* Equal Height Stackable */
@@ -537,7 +537,7 @@
537
537
  /* Sub Menu */
538
538
  .ui.tiered.menu .sub.menu {
539
539
  background-color: @tieredActiveMenuBackground;
540
- border-radius: 0em;
540
+ border-radius: 0em 0em @borderRadius @borderRadius;
541
541
  border-top: 1px solid @borderColor;
542
542
  box-shadow: none;
543
543
  }
@@ -1515,7 +1515,7 @@
1515
1515
  top: 100%;
1516
1516
  left: 50%;
1517
1517
  transform: translateX(-50%) translateY(-50%) rotate(45deg);
1518
- margin: @arrowBorderSize 0em 0em 0em;
1518
+ margin: 0em;
1519
1519
 
1520
1520
  background: none;
1521
1521
 
@@ -53,7 +53,13 @@ img.ui.image {
53
53
  States
54
54
  *******************************/
55
55
 
56
+ .ui.hidden.images,
57
+ .ui.hidden.image {
58
+ display: none;
59
+ }
60
+
56
61
 
62
+ .ui.disabled.images,
57
63
  .ui.disabled.image {
58
64
  cursor: default;
59
65
  opacity: @disabledOpacity;
@@ -275,6 +281,7 @@ img.ui.bordered.image {
275
281
  font-size: @massive;
276
282
  }
277
283
 
284
+
278
285
  /*******************************
279
286
  Groups
280
287
  *******************************/
@@ -28,44 +28,6 @@
28
28
  Standard
29
29
  *******************************/
30
30
 
31
-
32
- /*--------------
33
- Cards
34
- ---------------*/
35
-
36
- .ui.cards {
37
- display: @groupDisplay;
38
- margin: @groupCardsMargin;
39
- flex-wrap: wrap;
40
- }
41
-
42
- .ui.cards > .card {
43
- display: @groupCardDisplay;
44
- margin: @groupCardMargin;
45
- float: @groupFloat;
46
- }
47
-
48
- .ui.cards:first-child,
49
- .ui.card:first-child {
50
- margin-top: 0em;
51
- }
52
- .ui.cards:last-child,
53
- .ui.card:last-child {
54
- margin-bottom: 0em;
55
- }
56
-
57
- /* Clearing */
58
- .ui.cards:after,
59
- .ui.card:after {
60
- display: block;
61
- content: ' ';
62
- height: 0px;
63
- clear: both;
64
- overflow: hidden;
65
- visibility: hidden;
66
- }
67
-
68
-
69
31
  /*--------------
70
32
  Card
71
33
  ---------------*/
@@ -97,6 +59,47 @@
97
59
  cursor: pointer;
98
60
  }
99
61
 
62
+ .ui.card:first-child {
63
+ margin-top: 0em;
64
+ }
65
+ .ui.card:last-child {
66
+ margin-bottom: 0em;
67
+ }
68
+
69
+ /*--------------
70
+ Cards
71
+ ---------------*/
72
+
73
+ .ui.cards {
74
+ display: @groupDisplay;
75
+ margin: @groupMargin;
76
+ flex-wrap: wrap;
77
+ }
78
+
79
+ .ui.cards > .card {
80
+ display: @groupCardDisplay;
81
+ margin: @groupCardMargin;
82
+ float: @groupCardFloat;
83
+ }
84
+
85
+ /* Clearing */
86
+ .ui.cards:after,
87
+ .ui.card:after {
88
+ display: block;
89
+ content: ' ';
90
+ height: 0px;
91
+ clear: both;
92
+ overflow: hidden;
93
+ visibility: hidden;
94
+ }
95
+
96
+
97
+ /* Consecutive Card Groups Preserve Row Spacing */
98
+ .ui.cards ~ .ui.cards {
99
+ margin-top: @consecutiveGroupDistance;
100
+ }
101
+
102
+
100
103
 
101
104
  /*--------------
102
105
  Rounded Edges
@@ -73,9 +73,9 @@
73
73
  /* Divider */
74
74
  @dividerMargin: @rowDistance 0em;
75
75
 
76
- /* Validation Prompt */
77
- @validationMargin: 0em 0em 0em @rowDistance;
78
- @validationArrowOffset: -0.3em;
76
+ /* Inline Validation Prompt */
77
+ @inlineValidationMargin: -0.5em 0em -0.5em @rowDistance;
78
+ @inlineValidationArrowOffset: -0.3em;
79
79
 
80
80
  /*-------------------
81
81
  States
@@ -135,7 +135,7 @@
135
135
  @arrowBorderSize: 1px;
136
136
  @arrowBorder: @arrowBorderSize solid @solidBorderColor;
137
137
  @arrowTransition: background @transitionDuration @transitionEasing;
138
- @arrowZIndex: 2;
138
+ @arrowZIndex: 11;
139
139
 
140
140
  @arrowHoverColor: #FAFAFA;
141
141
  @arrowActiveColor: #F7F7F7;
@@ -10,7 +10,7 @@
10
10
  @shadowDistance: 3px;
11
11
  @shadowBoxShadow: 0px @shadowDistance 0px 0px @solidBorderColor;
12
12
 
13
- /* Item */
13
+ /* Card */
14
14
  @display: flex;
15
15
  @background: #FFFFFF;
16
16
  @borderRadius: @defaultBorderRadius;
@@ -28,15 +28,20 @@
28
28
  @zIndex: '';
29
29
  @transition: box-shadow @transitionDuration @transitionEasing;
30
30
 
31
- /* Item Group */
31
+ /* Card Group */
32
32
  @horizontalSpacing: 1em;
33
- @rowSpacing: 1.5em;
33
+ @rowSpacing: 1.75em;
34
+
35
+ @groupMargin: -(@rowSpacing / 2) -(@horizontalSpacing / 2);
34
36
  @groupDisplay: flex;
37
+
38
+ @groupCardFloat: none;
35
39
  @groupCardDisplay: flex;
36
- @groupFloat: none;
37
- @groupCardsMargin: -(@rowSpacing / 2) -(@horizontalSpacing / 2);
38
40
  @groupCardMargin: (@rowSpacing / 2) (@horizontalSpacing / 2);
39
41
 
42
+ /* Consecutive Cards */
43
+ @consecutiveGroupDistance: (@rowSpacing / 2);
44
+
40
45
  /*-------------------
41
46
  Content
42
47
  --------------------*/
@@ -1,7 +1,7 @@
1
1
  module Less
2
2
  module Rails
3
3
  module SemanticUI
4
- VERSION = '1.9.2.0'
4
+ VERSION = '1.10.0.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: 1.9.2.0
4
+ version: 1.10.0.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-02-20 00:00:00.000000000 Z
11
+ date: 2015-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: less-rails