semantic-ui-sass 2.2.14 → 2.3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +5 -1
  3. data/app/assets/fonts/semantic-ui/icons.eot +0 -0
  4. data/app/assets/fonts/semantic-ui/icons.svg +946 -2670
  5. data/app/assets/fonts/semantic-ui/icons.ttf +0 -0
  6. data/app/assets/fonts/semantic-ui/icons.woff +0 -0
  7. data/app/assets/fonts/semantic-ui/icons.woff2 +0 -0
  8. data/app/assets/javascripts/semantic-ui/accordion.js +5 -2
  9. data/app/assets/javascripts/semantic-ui/dimmer.js +2 -0
  10. data/app/assets/javascripts/semantic-ui/form.js +1 -1
  11. data/app/assets/javascripts/semantic-ui/modal.js +34 -42
  12. data/app/assets/javascripts/semantic-ui/popup.js +45 -8
  13. data/app/assets/javascripts/semantic-ui/search.js +71 -18
  14. data/app/assets/stylesheets/semantic-ui/collections/_breadcrumb.scss +1 -1
  15. data/app/assets/stylesheets/semantic-ui/collections/_form.scss +1 -1
  16. data/app/assets/stylesheets/semantic-ui/collections/_grid.scss +1 -1
  17. data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +4 -4
  18. data/app/assets/stylesheets/semantic-ui/collections/_message.scss +1 -1
  19. data/app/assets/stylesheets/semantic-ui/collections/_table.scss +6 -1
  20. data/app/assets/stylesheets/semantic-ui/elements/_button.scss +1 -1
  21. data/app/assets/stylesheets/semantic-ui/elements/_container.scss +1 -1
  22. data/app/assets/stylesheets/semantic-ui/elements/_divider.scss +1 -1
  23. data/app/assets/stylesheets/semantic-ui/elements/_flag.scss +1 -1
  24. data/app/assets/stylesheets/semantic-ui/elements/_header.scss +1 -1
  25. data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +2911 -1842
  26. data/app/assets/stylesheets/semantic-ui/elements/_image.scss +5 -1
  27. data/app/assets/stylesheets/semantic-ui/elements/_input.scss +35 -35
  28. data/app/assets/stylesheets/semantic-ui/elements/_label.scss +1 -1
  29. data/app/assets/stylesheets/semantic-ui/elements/_list.scss +1 -1
  30. data/app/assets/stylesheets/semantic-ui/elements/_loader.scss +1 -1
  31. data/app/assets/stylesheets/semantic-ui/elements/_rail.scss +1 -1
  32. data/app/assets/stylesheets/semantic-ui/elements/_reveal.scss +1 -1
  33. data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +1 -1
  34. data/app/assets/stylesheets/semantic-ui/elements/_step.scss +1 -1
  35. data/app/assets/stylesheets/semantic-ui/globals/_reset.scss +1 -1
  36. data/app/assets/stylesheets/semantic-ui/globals/_site.scss +1 -1
  37. data/app/assets/stylesheets/semantic-ui/modules/_accordion.scss +1 -1
  38. data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +1 -1
  39. data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +36 -9
  40. data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +1 -1
  41. data/app/assets/stylesheets/semantic-ui/modules/_embed.scss +1 -1
  42. data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +49 -48
  43. data/app/assets/stylesheets/semantic-ui/modules/_nag.scss +1 -1
  44. data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +1 -1
  45. data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +1 -1
  46. data/app/assets/stylesheets/semantic-ui/modules/_rating.scss +1 -1
  47. data/app/assets/stylesheets/semantic-ui/modules/_search.scss +34 -18
  48. data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +1 -1
  49. data/app/assets/stylesheets/semantic-ui/modules/_sidebar.scss +1 -1
  50. data/app/assets/stylesheets/semantic-ui/modules/_sticky.scss +1 -1
  51. data/app/assets/stylesheets/semantic-ui/modules/_tab.scss +1 -1
  52. data/app/assets/stylesheets/semantic-ui/modules/_transition.scss +97 -2
  53. data/app/assets/stylesheets/semantic-ui/views/_ad.scss +1 -1
  54. data/app/assets/stylesheets/semantic-ui/views/_card.scss +1 -1
  55. data/app/assets/stylesheets/semantic-ui/views/_comment.scss +1 -1
  56. data/app/assets/stylesheets/semantic-ui/views/_feed.scss +1 -1
  57. data/app/assets/stylesheets/semantic-ui/views/_item.scss +1 -1
  58. data/app/assets/stylesheets/semantic-ui/views/_statistic.scss +1 -1
  59. data/lib/semantic/ui/sass/version.rb +2 -2
  60. data/tasks/converter.rb +1 -0
  61. metadata +3 -3
Binary file
@@ -169,6 +169,7 @@ $.fn.accordion = function(parameters) {
169
169
  }
170
170
  module.debug('Opening accordion content', $activeTitle);
171
171
  settings.onOpening.call($activeContent);
172
+ settings.onChanging.call($activeContent);
172
173
  if(settings.exclusive) {
173
174
  module.closeOthers.call($activeTitle);
174
175
  }
@@ -232,6 +233,7 @@ $.fn.accordion = function(parameters) {
232
233
  if((isActive || isOpening) && !isClosing) {
233
234
  module.debug('Closing accordion content', $activeContent);
234
235
  settings.onClosing.call($activeContent);
236
+ settings.onChanging.call($activeContent);
235
237
  $activeTitle
236
238
  .removeClass(className.active)
237
239
  ;
@@ -574,10 +576,11 @@ $.fn.accordion.settings = {
574
576
  duration : 350, // duration of animation
575
577
  easing : 'easeOutQuad', // easing equation for animation
576
578
 
577
-
578
579
  onOpening : function(){}, // callback before open animation
579
- onOpen : function(){}, // callback after open animation
580
580
  onClosing : function(){}, // callback before closing animation
581
+ onChanging : function(){}, // callback before closing or opening animation
582
+
583
+ onOpen : function(){}, // callback after open animation
581
584
  onClose : function(){}, // callback after closing animation
582
585
  onChange : function(){}, // callback after closing or opening animation
583
586
 
@@ -238,6 +238,7 @@ $.fn.dimmer = function(parameters) {
238
238
  }
239
239
  $dimmer
240
240
  .transition({
241
+ displayType : 'flex',
241
242
  animation : settings.transition + ' in',
242
243
  queue : false,
243
244
  duration : module.get.duration(),
@@ -282,6 +283,7 @@ $.fn.dimmer = function(parameters) {
282
283
  module.verbose('Hiding dimmer with css');
283
284
  $dimmer
284
285
  .transition({
286
+ displayType : 'flex',
285
287
  animation : settings.transition + ' out',
286
288
  queue : false,
287
289
  duration : module.get.duration(),
@@ -358,7 +358,7 @@ $.fn.form = function(parameters) {
358
358
  module.validate.field( validationRules );
359
359
  }
360
360
  }
361
- else if(settings.on == 'blur' || settings.on == 'change') {
361
+ else if(settings.on == 'blur') {
362
362
  if(validationRules) {
363
363
  module.validate.field( validationRules );
364
364
  }
@@ -108,6 +108,10 @@ $.fn.modal = function(parameters) {
108
108
  var
109
109
  defaultSettings = {
110
110
  debug : settings.debug,
111
+ variation : settings.centered
112
+ ? false
113
+ : 'top aligned'
114
+ ,
111
115
  dimmerName : 'modals'
112
116
  },
113
117
  dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)
@@ -165,7 +169,6 @@ $.fn.modal = function(parameters) {
165
169
  module.cacheSizes();
166
170
  module.set.screenHeight();
167
171
  module.set.type();
168
- module.set.position();
169
172
  },
170
173
 
171
174
  refreshModals: function() {
@@ -238,21 +241,23 @@ $.fn.modal = function(parameters) {
238
241
  module.hide();
239
242
  },
240
243
  click: function(event) {
244
+ if(!settings.closable) {
245
+ module.verbose('Dimmer clicked but closable setting is disabled');
246
+ return;
247
+ }
241
248
  var
242
249
  $target = $(event.target),
243
250
  isInModal = ($target.closest(selector.modal).length > 0),
244
251
  isInDOM = $.contains(document.documentElement, event.target)
245
252
  ;
246
- if(!isInModal && isInDOM) {
253
+ if(!isInModal && isInDOM && module.is.active()) {
247
254
  module.debug('Dimmer clicked, hiding all modals');
248
- if( module.is.active() ) {
249
- module.remove.clickaway();
250
- if(settings.allowMultiple) {
251
- module.hide();
252
- }
253
- else {
254
- module.hideAll();
255
- }
255
+ module.remove.clickaway();
256
+ if(settings.allowMultiple) {
257
+ module.hide();
258
+ }
259
+ else {
260
+ module.hideAll();
256
261
  }
257
262
  }
258
263
  },
@@ -320,7 +325,6 @@ $.fn.modal = function(parameters) {
320
325
 
321
326
  module.showDimmer();
322
327
  module.cacheSizes();
323
- module.set.position();
324
328
  module.set.screenHeight();
325
329
  module.set.type();
326
330
  module.set.clickaway();
@@ -487,7 +491,13 @@ $.fn.modal = function(parameters) {
487
491
 
488
492
  save: {
489
493
  focus: function() {
490
- $focusedElement = $(document.activeElement).blur();
494
+ var
495
+ $activeElement = $(document.activeElement),
496
+ inCurrentModal = $activeElement.closest($module).length > 0
497
+ ;
498
+ if(!inCurrentModal) {
499
+ $focusedElement = $(document.activeElement).blur();
500
+ }
491
501
  }
492
502
  },
493
503
 
@@ -504,11 +514,9 @@ $.fn.modal = function(parameters) {
504
514
  $module.removeClass(className.active);
505
515
  },
506
516
  clickaway: function() {
507
- if(settings.closable) {
508
- $dimmer
509
- .off('click' + elementEventNamespace)
510
- ;
511
- }
517
+ $dimmer
518
+ .off('click' + elementEventNamespace)
519
+ ;
512
520
  },
513
521
  bodyStyle: function() {
514
522
  if($body.attr('style') === '') {
@@ -606,11 +614,9 @@ $.fn.modal = function(parameters) {
606
614
  }
607
615
  },
608
616
  clickaway: function() {
609
- if(settings.closable) {
610
- $dimmer
611
- .on('click' + elementEventNamespace, module.event.click)
612
- ;
613
- }
617
+ $dimmer
618
+ .on('click' + elementEventNamespace, module.event.click)
619
+ ;
614
620
  },
615
621
  dimmerSettings: function() {
616
622
  if($.fn.dimmer === undefined) {
@@ -621,8 +627,11 @@ $.fn.modal = function(parameters) {
621
627
  defaultSettings = {
622
628
  debug : settings.debug,
623
629
  dimmerName : 'modals',
624
- variation : false,
625
630
  closable : 'auto',
631
+ variation : settings.centered
632
+ ? false
633
+ : 'top aligned'
634
+ ,
626
635
  duration : {
627
636
  show : settings.duration,
628
637
  hide : settings.duration
@@ -678,25 +687,6 @@ $.fn.modal = function(parameters) {
678
687
  module.set.scrolling();
679
688
  }
680
689
  },
681
- position: function() {
682
- module.verbose('Centering modal on page', module.cache);
683
- if(module.can.fit()) {
684
- $module
685
- .css({
686
- top: '',
687
- marginTop: module.cache.topOffset
688
- })
689
- ;
690
- }
691
- else {
692
- $module
693
- .css({
694
- marginTop : '',
695
- top : $document.scrollTop()
696
- })
697
- ;
698
- }
699
- },
700
690
  undetached: function() {
701
691
  $dimmable.addClass(className.undetached);
702
692
  }
@@ -905,6 +895,8 @@ $.fn.modal.settings = {
905
895
  inverted : false,
906
896
  blurring : false,
907
897
 
898
+ centered : true,
899
+
908
900
  dimmerSettings : {
909
901
  closable : false,
910
902
  useCSS : true
@@ -488,7 +488,7 @@ $.fn.popup = function(parameters) {
488
488
  },
489
489
  content: function() {
490
490
  $module.removeData(metadata.content);
491
- return $module.data(metadata.content) || $module.attr('title') || settings.content;
491
+ return $module.data(metadata.content) || settings.content || $module.attr('title');
492
492
  },
493
493
  variation: function() {
494
494
  $module.removeData(metadata.variation);
@@ -502,9 +502,10 @@ $.fn.popup = function(parameters) {
502
502
  },
503
503
  calculations: function() {
504
504
  var
505
- targetElement = $target[0],
506
- isWindow = ($boundary[0] == window),
507
- targetPosition = (settings.inline || (settings.popup && settings.movePopup))
505
+ $popupOffsetParent = module.get.offsetParent($popup),
506
+ targetElement = $target[0],
507
+ isWindow = ($boundary[0] == window),
508
+ targetPosition = (settings.inline || (settings.popup && settings.movePopup))
508
509
  ? $target.position()
509
510
  : $target.offset(),
510
511
  screenPosition = (isWindow)
@@ -549,6 +550,17 @@ $.fn.popup = function(parameters) {
549
550
  }
550
551
  };
551
552
 
553
+ // if popup offset context is not same as target, then adjust calculations
554
+ if($popupOffsetParent.get(0) !== $offsetParent.get(0)) {
555
+ var
556
+ popupOffset = $popupOffsetParent.offset()
557
+ ;
558
+ calculations.target.top -= popupOffset.top;
559
+ calculations.target.left -= popupOffset.left;
560
+ calculations.parent.width = $popupOffsetParent.outerWidth();
561
+ calculations.parent.height = $popupOffsetParent.outerHeight();
562
+ }
563
+
552
564
  // add in container calcs if fluid
553
565
  if( settings.setFluidWidth && module.is.fluid() ) {
554
566
  calculations.container = {
@@ -637,14 +649,14 @@ $.fn.popup = function(parameters) {
637
649
  var
638
650
  is2D = ($node.css('transform') === 'none'),
639
651
  isStatic = ($node.css('position') === 'static'),
640
- isHTML = $node.is('html')
652
+ isBody = $node.is('body')
641
653
  ;
642
- while(parentNode && !isHTML && isStatic && is2D) {
654
+ while(parentNode && !isBody && isStatic && is2D) {
643
655
  parentNode = parentNode.parentNode;
644
656
  $node = $(parentNode);
645
657
  is2D = ($node.css('transform') === 'none');
646
658
  isStatic = ($node.css('position') === 'static');
647
- isHTML = $node.is('html');
659
+ isBody = $node.is('body');
648
660
  }
649
661
  }
650
662
  return ($node && $node.length > 0)
@@ -753,6 +765,18 @@ $.fn.popup = function(parameters) {
753
765
  popup = calculations.popup;
754
766
  parent = calculations.parent;
755
767
 
768
+ if(module.should.centerArrow(calculations)) {
769
+ module.verbose('Adjusting offset to center arrow on small target element');
770
+ if(position == 'top left' || position == 'bottom left') {
771
+ offset += (target.width / 2)
772
+ offset -= settings.arrowPixelsFromEdge;
773
+ }
774
+ if(position == 'top right' || position == 'bottom right') {
775
+ offset -= (target.width / 2)
776
+ offset += settings.arrowPixelsFromEdge;
777
+ }
778
+ }
779
+
756
780
  if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) {
757
781
  module.debug('Popup target is hidden, no action taken');
758
782
  return false;
@@ -1046,6 +1070,12 @@ $.fn.popup = function(parameters) {
1046
1070
  }
1047
1071
  },
1048
1072
 
1073
+ should: {
1074
+ centerArrow: function(calculations) {
1075
+ return !module.is.basic() && calculations.target.width <= (settings.arrowPixelsFromEdge * 2);
1076
+ }
1077
+ },
1078
+
1049
1079
  is: {
1050
1080
  offstage: function(distanceFromBoundary, position) {
1051
1081
  var
@@ -1068,6 +1098,9 @@ $.fn.popup = function(parameters) {
1068
1098
  svg: function(element) {
1069
1099
  return module.supports.svg() && (element instanceof SVGGraphicsElement);
1070
1100
  },
1101
+ basic: function() {
1102
+ return $module.hasClass(className.basic);
1103
+ },
1071
1104
  active: function() {
1072
1105
  return $module.hasClass(className.active);
1073
1106
  },
@@ -1380,8 +1413,11 @@ $.fn.popup.settings = {
1380
1413
  // specify position to appear even if it doesn't fit
1381
1414
  lastResort : false,
1382
1415
 
1416
+ // number of pixels from edge of popup to pointing arrow center (used from centering)
1417
+ arrowPixelsFromEdge: 20,
1418
+
1383
1419
  // delay used to prevent accidental refiring of animations due to user error
1384
- delay : {
1420
+ delay : {
1385
1421
  show : 50,
1386
1422
  hide : 70
1387
1423
  },
@@ -1425,6 +1461,7 @@ $.fn.popup.settings = {
1425
1461
 
1426
1462
  className : {
1427
1463
  active : 'active',
1464
+ basic : 'basic',
1428
1465
  animating : 'animating',
1429
1466
  dropdown : 'dropdown',
1430
1467
  fluid : 'fluid',
@@ -70,6 +70,7 @@ $.fn.search = function(parameters) {
70
70
 
71
71
  initialize: function() {
72
72
  module.verbose('Initializing module');
73
+ module.get.settings();
73
74
  module.determine.searchFields();
74
75
  module.bind.events();
75
76
  module.set.type();
@@ -402,6 +403,12 @@ $.fn.search = function(parameters) {
402
403
  },
403
404
 
404
405
  get: {
406
+ settings: function() {
407
+ if($.isPlainObject(parameters) && parameters.searchFullText) {
408
+ settings.fullTextSearch = parameters.searchFullText;
409
+ module.error(settings.error.oldSearchSyntax, element);
410
+ }
411
+ },
405
412
  inputEvent: function() {
406
413
  var
407
414
  prompt = $prompt[0],
@@ -545,8 +552,14 @@ $.fn.search = function(parameters) {
545
552
  ;
546
553
  module.set.loading();
547
554
  module.save.results(results);
548
- module.debug('Returned local search results', results);
549
-
555
+ module.debug('Returned full local search results', results);
556
+ if(settings.maxResults > 0) {
557
+ module.debug('Using specified max results', results);
558
+ results = results.slice(0, settings.maxResults);
559
+ }
560
+ if(settings.type == 'category') {
561
+ results = module.create.categoryResults(results);
562
+ }
550
563
  searchHTML = module.generateResults({
551
564
  results: results
552
565
  });
@@ -574,6 +587,7 @@ $.fn.search = function(parameters) {
574
587
  object: function(searchTerm, source, searchFields) {
575
588
  var
576
589
  results = [],
590
+ exactResults = [],
577
591
  fuzzyResults = [],
578
592
  searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'),
579
593
  matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'),
@@ -605,7 +619,6 @@ $.fn.search = function(parameters) {
605
619
  module.error(error.source);
606
620
  return [];
607
621
  }
608
-
609
622
  // iterate through search fields looking for matches
610
623
  $.each(searchFields, function(index, field) {
611
624
  $.each(source, function(label, content) {
@@ -617,17 +630,30 @@ $.fn.search = function(parameters) {
617
630
  // content starts with value (first in results)
618
631
  addResult(results, content);
619
632
  }
620
- else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) {
633
+ else if(settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, content[field]) ) {
634
+ // content fuzzy matches (last in results)
635
+ addResult(exactResults, content);
636
+ }
637
+ else if(settings.fullTextSearch == true && module.fuzzySearch(searchTerm, content[field]) ) {
621
638
  // content fuzzy matches (last in results)
622
639
  addResult(fuzzyResults, content);
623
640
  }
624
641
  }
625
642
  });
626
643
  });
627
- return $.merge(results, fuzzyResults);
644
+ $.merge(exactResults, fuzzyResults)
645
+ $.merge(results, exactResults);
646
+ return results;
628
647
  }
629
648
  },
630
-
649
+ exactSearch: function (query, term) {
650
+ query = query.toLowerCase();
651
+ term = term.toLowerCase();
652
+ if(term.indexOf(query) > -1) {
653
+ return true;
654
+ }
655
+ return false;
656
+ },
631
657
  fuzzySearch: function(query, term) {
632
658
  var
633
659
  termLength = term.length,
@@ -739,6 +765,27 @@ $.fn.search = function(parameters) {
739
765
  },
740
766
 
741
767
  create: {
768
+ categoryResults: function(results) {
769
+ var
770
+ categoryResults = {}
771
+ ;
772
+ $.each(results, function(index, result) {
773
+ if(!result.category) {
774
+ return;
775
+ }
776
+ if(categoryResults[result.category] === undefined) {
777
+ module.verbose('Creating new category of results', result.category);
778
+ categoryResults[result.category] = {
779
+ name : result.category,
780
+ results : [result]
781
+ }
782
+ }
783
+ else {
784
+ categoryResults[result.category].results.push(result);
785
+ }
786
+ });
787
+ return categoryResults;
788
+ },
742
789
  id: function(resultIndex, categoryIndex) {
743
790
  var
744
791
  resultID = (resultIndex + 1), // not zero indexed
@@ -776,7 +823,10 @@ $.fn.search = function(parameters) {
776
823
  $selectedResult = (categoryIndex !== undefined)
777
824
  ? $results
778
825
  .children().eq(categoryIndex)
779
- .children(selector.result).eq(resultIndex)
826
+ .children(selector.results)
827
+ .first()
828
+ .children(selector.result)
829
+ .eq(resultIndex)
780
830
  : $results
781
831
  .children(selector.result).eq(resultIndex)
782
832
  ;
@@ -1197,8 +1247,8 @@ $.fn.search.settings = {
1197
1247
  // field to display in standard results template
1198
1248
  displayField : '',
1199
1249
 
1200
- // whether to include fuzzy results in local search
1201
- searchFullText : true,
1250
+ // search anywhere in value (set to 'exact' to require exact matches
1251
+ fullTextSearch : 'exact',
1202
1252
 
1203
1253
  // whether to add events to prompt automatically
1204
1254
  automatic : true,
@@ -1209,7 +1259,7 @@ $.fn.search.settings = {
1209
1259
  // delay before searching
1210
1260
  searchDelay : 200,
1211
1261
 
1212
- // maximum results returned from local
1262
+ // maximum results returned from search
1213
1263
  maxResults : 7,
1214
1264
 
1215
1265
  // whether to store lookups in local cache
@@ -1245,14 +1295,15 @@ $.fn.search.settings = {
1245
1295
  },
1246
1296
 
1247
1297
  error : {
1248
- source : 'Cannot search. No source used, and Semantic API module was not included',
1249
- noResults : 'Your search returned no results',
1250
- logging : 'Error in debug logging, exiting.',
1251
- noEndpoint : 'No search endpoint was specified',
1252
- noTemplate : 'A valid template name was not specified.',
1253
- serverError : 'There was an issue querying the server.',
1254
- maxResults : 'Results must be an array to use maxResults setting',
1255
- method : 'The method you called is not defined.'
1298
+ source : 'Cannot search. No source used, and Semantic API module was not included',
1299
+ noResults : 'Your search returned no results',
1300
+ logging : 'Error in debug logging, exiting.',
1301
+ noEndpoint : 'No search endpoint was specified',
1302
+ noTemplate : 'A valid template name was not specified.',
1303
+ oldSearchSyntax : 'searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.',
1304
+ serverError : 'There was an issue querying the server.',
1305
+ maxResults : 'Results must be an array to use maxResults setting',
1306
+ method : 'The method you called is not defined.'
1256
1307
  },
1257
1308
 
1258
1309
  metadata: {
@@ -1354,6 +1405,7 @@ $.fn.search.settings = {
1354
1405
  }
1355
1406
 
1356
1407
  // each item inside category
1408
+ html += '<div class="results">';
1357
1409
  $.each(category.results, function(index, result) {
1358
1410
  if(result[fields.url]) {
1359
1411
  html += '<a class="result" href="' + result[fields.url] + '">';
@@ -1383,6 +1435,7 @@ $.fn.search.settings = {
1383
1435
  ;
1384
1436
  html += '</a>';
1385
1437
  });
1438
+ html += '</div>';
1386
1439
  html += ''
1387
1440
  + '</div>'
1388
1441
  ;