less-rails-semantic_ui 1.9.2.0 → 1.10.0.0

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