less-rails-semantic_ui 2.1.8.2 → 2.2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +15 -0
  3. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.eot +0 -0
  4. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.svg +146 -26
  5. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.ttf +0 -0
  6. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.woff +0 -0
  7. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.woff2 +0 -0
  8. data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +41 -16
  9. data/assets/javascripts/semantic_ui/definitions/behaviors/colorize.js +233 -227
  10. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +58 -23
  11. data/assets/javascripts/semantic_ui/definitions/behaviors/state.js +20 -7
  12. data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +89 -22
  13. data/assets/javascripts/semantic_ui/definitions/behaviors/visit.js +13 -5
  14. data/assets/javascripts/semantic_ui/definitions/globals/site.js +2 -2
  15. data/assets/javascripts/semantic_ui/definitions/modules/accordion.js +20 -6
  16. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +31 -9
  17. data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +27 -9
  18. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +482 -207
  19. data/assets/javascripts/semantic_ui/definitions/modules/embed.js +50 -13
  20. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +28 -13
  21. data/assets/javascripts/semantic_ui/definitions/modules/nag.js +28 -7
  22. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +136 -76
  23. data/assets/javascripts/semantic_ui/definitions/modules/progress.js +177 -62
  24. data/assets/javascripts/semantic_ui/definitions/modules/rating.js +41 -8
  25. data/assets/javascripts/semantic_ui/definitions/modules/search.js +109 -56
  26. data/assets/javascripts/semantic_ui/definitions/modules/shape.js +52 -19
  27. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +21 -7
  28. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +48 -19
  29. data/assets/javascripts/semantic_ui/definitions/modules/tab.js +57 -27
  30. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +24 -8
  31. data/assets/stylesheets/semantic_ui/definitions/collections/breadcrumb.less +1 -2
  32. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +42 -36
  33. data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +12 -5
  34. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +50 -6
  35. data/assets/stylesheets/semantic_ui/definitions/collections/message.less +20 -1
  36. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +16 -3
  37. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +184 -40
  38. data/assets/stylesheets/semantic_ui/definitions/elements/container.less +1 -2
  39. data/assets/stylesheets/semantic_ui/definitions/elements/divider.less +1 -3
  40. data/assets/stylesheets/semantic_ui/definitions/elements/flag.less +1 -2
  41. data/assets/stylesheets/semantic_ui/definitions/elements/header.less +2 -2
  42. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +1 -2
  43. data/assets/stylesheets/semantic_ui/definitions/elements/image.less +6 -1
  44. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +14 -14
  45. data/assets/stylesheets/semantic_ui/definitions/elements/label.less +3 -3
  46. data/assets/stylesheets/semantic_ui/definitions/elements/list.less +29 -16
  47. data/assets/stylesheets/semantic_ui/definitions/elements/loader.less +72 -9
  48. data/assets/stylesheets/semantic_ui/definitions/elements/rail.less +21 -2
  49. data/assets/stylesheets/semantic_ui/definitions/elements/reveal.less +2 -3
  50. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +44 -3
  51. data/assets/stylesheets/semantic_ui/definitions/elements/step.less +28 -8
  52. data/assets/stylesheets/semantic_ui/definitions/globals/reset.less +1 -2
  53. data/assets/stylesheets/semantic_ui/definitions/globals/site.less +0 -1
  54. data/assets/stylesheets/semantic_ui/definitions/modules/accordion.less +0 -1
  55. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +9 -10
  56. data/assets/stylesheets/semantic_ui/definitions/modules/dimmer.less +1 -2
  57. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +39 -21
  58. data/assets/stylesheets/semantic_ui/definitions/modules/embed.less +0 -1
  59. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +0 -1
  60. data/assets/stylesheets/semantic_ui/definitions/modules/nag.less +1 -2
  61. data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +344 -2
  62. data/assets/stylesheets/semantic_ui/definitions/modules/progress.less +0 -1
  63. data/assets/stylesheets/semantic_ui/definitions/modules/rating.less +0 -1
  64. data/assets/stylesheets/semantic_ui/definitions/modules/search.less +1 -1
  65. data/assets/stylesheets/semantic_ui/definitions/modules/shape.less +1 -2
  66. data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +1 -2
  67. data/assets/stylesheets/semantic_ui/definitions/modules/sticky.less +1 -2
  68. data/assets/stylesheets/semantic_ui/definitions/modules/tab.less +1 -2
  69. data/assets/stylesheets/semantic_ui/definitions/modules/transition.less +1 -2
  70. data/assets/stylesheets/semantic_ui/definitions/views/card.less +20 -2
  71. data/assets/stylesheets/semantic_ui/definitions/views/comment.less +1 -2
  72. data/assets/stylesheets/semantic_ui/definitions/views/feed.less +0 -1
  73. data/assets/stylesheets/semantic_ui/definitions/views/item.less +1 -2
  74. data/assets/stylesheets/semantic_ui/definitions/views/statistic.less +18 -19
  75. data/assets/stylesheets/semantic_ui/themes/basic/globals/reset.overrides +1 -1
  76. data/assets/stylesheets/semantic_ui/themes/default/collections/form.variables +4 -5
  77. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +13 -0
  78. data/assets/stylesheets/semantic_ui/themes/default/collections/message.variables +47 -1
  79. data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +7 -2
  80. data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +14 -0
  81. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +263 -76
  82. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.variables +3 -1
  83. data/assets/stylesheets/semantic_ui/themes/default/elements/input.variables +2 -4
  84. data/assets/stylesheets/semantic_ui/themes/default/elements/list.variables +2 -1
  85. data/assets/stylesheets/semantic_ui/themes/default/elements/loader.variables +17 -5
  86. data/assets/stylesheets/semantic_ui/themes/default/elements/rail.variables +2 -2
  87. data/assets/stylesheets/semantic_ui/themes/default/elements/step.variables +1 -1
  88. data/assets/stylesheets/semantic_ui/themes/default/globals/reset.overrides +1 -6
  89. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +170 -46
  90. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +15 -12
  91. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +41 -3
  92. data/assets/stylesheets/semantic_ui/themes/default/modules/rating.overrides +2 -2
  93. data/assets/stylesheets/semantic_ui/themes/default/modules/sticky.variables +1 -1
  94. data/assets/stylesheets/semantic_ui/themes/default/views/card.variables +11 -0
  95. data/assets/stylesheets/semantic_ui/themes/material/collections/menu.variables +1 -1
  96. data/lib/less/rails/semantic_ui/version.rb +1 -1
  97. metadata +4 -3
@@ -3,16 +3,22 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2015 Contributors
7
6
  * Released under the MIT license
8
7
  * http://opensource.org/licenses/MIT
9
8
  *
10
9
  */
11
10
 
12
- ;(function ( $, window, document, undefined ) {
11
+ ;(function ($, window, document, undefined) {
13
12
 
14
13
  "use strict";
15
14
 
15
+ window = (typeof window != 'undefined' && window.Math == Math)
16
+ ? window
17
+ : (typeof self != 'undefined' && self.Math == Math)
18
+ ? self
19
+ : Function('return this')()
20
+ ;
21
+
16
22
  $.fn.shape = function(parameters) {
17
23
  var
18
24
  $allModules = $(this),
@@ -238,26 +244,34 @@ $.fn.shape = function(parameters) {
238
244
  var
239
245
  $clone = $module.clone().addClass(className.loading),
240
246
  $activeSide = $clone.find('.' + settings.className.active),
247
+ newWidth = (settings.width == 'next')
248
+ ? $nextSide.outerWidth(true)
249
+ : (settings.width == 'initial')
250
+ ? $module.width()
251
+ : settings.width,
252
+ newHeight = (settings.height == 'next')
253
+ ? $nextSide.outerHeight(true)
254
+ : (settings.height == 'initial')
255
+ ? $module.height()
256
+ : settings.height,
241
257
  $nextSide = (nextIndex)
242
258
  ? $clone.find(selector.side).eq(nextIndex)
243
259
  : ( $activeSide.next(selector.side).length > 0 )
244
260
  ? $activeSide.next(selector.side)
245
- : $clone.find(selector.side).first(),
246
- newSize = {}
261
+ : $clone.find(selector.side).first()
247
262
  ;
248
- module.set.currentStageSize();
249
263
  $activeSide.removeClass(className.active);
250
264
  $nextSide.addClass(className.active);
251
265
  $clone.insertAfter($module);
252
- newSize = {
253
- width : $nextSide.outerWidth(true),
254
- height : $nextSide.outerHeight(true)
255
- };
256
266
  $clone.remove();
257
- $module
258
- .css(newSize)
259
- ;
260
- module.verbose('Resizing stage to fit new content', newSize);
267
+ if(settings.width != 'auto') {
268
+ $module.css('width', newWidth + settings.jitter);
269
+ module.verbose('Specifying width during animation', newWidth);
270
+ }
271
+ if(settings.height != 'auto') {
272
+ $module.css('height', newHeight + settings.jitter);
273
+ module.verbose('Specifying height during animation', newHeight);
274
+ }
261
275
  },
262
276
 
263
277
  nextSide: function(selector) {
@@ -650,7 +664,12 @@ $.fn.shape = function(parameters) {
650
664
  $.extend(true, settings, name);
651
665
  }
652
666
  else if(value !== undefined) {
653
- settings[name] = value;
667
+ if($.isPlainObject(settings[name])) {
668
+ $.extend(true, settings[name], value);
669
+ }
670
+ else {
671
+ settings[name] = value;
672
+ }
654
673
  }
655
674
  else {
656
675
  return settings[name];
@@ -668,7 +687,7 @@ $.fn.shape = function(parameters) {
668
687
  }
669
688
  },
670
689
  debug: function() {
671
- if(settings.debug) {
690
+ if(!settings.silent && settings.debug) {
672
691
  if(settings.performance) {
673
692
  module.performance.log(arguments);
674
693
  }
@@ -679,7 +698,7 @@ $.fn.shape = function(parameters) {
679
698
  }
680
699
  },
681
700
  verbose: function() {
682
- if(settings.verbose && settings.debug) {
701
+ if(!settings.silent && settings.verbose && settings.debug) {
683
702
  if(settings.performance) {
684
703
  module.performance.log(arguments);
685
704
  }
@@ -690,8 +709,10 @@ $.fn.shape = function(parameters) {
690
709
  }
691
710
  },
692
711
  error: function() {
693
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
694
- module.error.apply(console, arguments);
712
+ if(!settings.silent) {
713
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
714
+ module.error.apply(console, arguments);
715
+ }
695
716
  },
696
717
  performance: {
697
718
  log: function(message) {
@@ -828,18 +849,30 @@ $.fn.shape.settings = {
828
849
  // module info
829
850
  name : 'Shape',
830
851
 
852
+ // hide all debug content
853
+ silent : false,
854
+
831
855
  // debug content outputted to console
832
856
  debug : false,
833
857
 
834
858
  // verbose debug output
835
859
  verbose : false,
836
860
 
861
+ // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)
862
+ jitter : 0,
863
+
837
864
  // performance data output
838
865
  performance: true,
839
866
 
840
867
  // event namespace
841
868
  namespace : 'shape',
842
869
 
870
+ // width during animation, can be set to 'auto', initial', 'next' or pixel amount
871
+ width: 'initial',
872
+
873
+ // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount
874
+ height: 'initial',
875
+
843
876
  // callback occurs on side change
844
877
  beforeChange : function() {},
845
878
  onChange : function() {},
@@ -873,4 +906,4 @@ $.fn.shape.settings = {
873
906
  };
874
907
 
875
908
 
876
- })( jQuery, window, document );
909
+ })( jQuery, window, document );
@@ -3,16 +3,22 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2015 Contributors
7
6
  * Released under the MIT license
8
7
  * http://opensource.org/licenses/MIT
9
8
  *
10
9
  */
11
10
 
12
- ;(function ( $, window, document, undefined ) {
11
+ ;(function ($, window, document, undefined) {
13
12
 
14
13
  "use strict";
15
14
 
15
+ window = (typeof window != 'undefined' && window.Math == Math)
16
+ ? window
17
+ : (typeof self != 'undefined' && self.Math == Math)
18
+ ? self
19
+ : Function('return this')()
20
+ ;
21
+
16
22
  $.fn.sidebar = function(parameters) {
17
23
  var
18
24
  $allModules = $(this),
@@ -766,7 +772,12 @@ $.fn.sidebar = function(parameters) {
766
772
  $.extend(true, settings, name);
767
773
  }
768
774
  else if(value !== undefined) {
769
- settings[name] = value;
775
+ if($.isPlainObject(settings[name])) {
776
+ $.extend(true, settings[name], value);
777
+ }
778
+ else {
779
+ settings[name] = value;
780
+ }
770
781
  }
771
782
  else {
772
783
  return settings[name];
@@ -784,7 +795,7 @@ $.fn.sidebar = function(parameters) {
784
795
  }
785
796
  },
786
797
  debug: function() {
787
- if(settings.debug) {
798
+ if(!settings.silent && settings.debug) {
788
799
  if(settings.performance) {
789
800
  module.performance.log(arguments);
790
801
  }
@@ -795,7 +806,7 @@ $.fn.sidebar = function(parameters) {
795
806
  }
796
807
  },
797
808
  verbose: function() {
798
- if(settings.verbose && settings.debug) {
809
+ if(!settings.silent && settings.verbose && settings.debug) {
799
810
  if(settings.performance) {
800
811
  module.performance.log(arguments);
801
812
  }
@@ -806,8 +817,10 @@ $.fn.sidebar = function(parameters) {
806
817
  }
807
818
  },
808
819
  error: function() {
809
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
810
- module.error.apply(console, arguments);
820
+ if(!settings.silent) {
821
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
822
+ module.error.apply(console, arguments);
823
+ }
811
824
  },
812
825
  performance: {
813
826
  log: function(message) {
@@ -942,6 +955,7 @@ $.fn.sidebar.settings = {
942
955
  name : 'Sidebar',
943
956
  namespace : 'sidebar',
944
957
 
958
+ silent : false,
945
959
  debug : false,
946
960
  verbose : false,
947
961
  performance : true,
@@ -3,16 +3,22 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2015 Contributors
7
6
  * Released under the MIT license
8
7
  * http://opensource.org/licenses/MIT
9
8
  *
10
9
  */
11
10
 
12
- ;(function ( $, window, document, undefined ) {
11
+ ;(function ($, window, document, undefined) {
13
12
 
14
13
  "use strict";
15
14
 
15
+ window = (typeof window != 'undefined' && window.Math == Math)
16
+ ? window
17
+ : (typeof self != 'undefined' && self.Math == Math)
18
+ ? self
19
+ : Function('return this')()
20
+ ;
21
+
16
22
  $.fn.sticky = function(parameters) {
17
23
  var
18
24
  $allModules = $(this),
@@ -57,6 +63,8 @@ $.fn.sticky = function(parameters) {
57
63
  || function(callback) { setTimeout(callback, 0); },
58
64
 
59
65
  element = this,
66
+
67
+ documentObserver,
60
68
  observer,
61
69
  module
62
70
  ;
@@ -90,6 +98,9 @@ $.fn.sticky = function(parameters) {
90
98
  destroy: function() {
91
99
  module.verbose('Destroying previous instance');
92
100
  module.reset();
101
+ if(documentObserver) {
102
+ documentObserver.disconnect();
103
+ }
93
104
  if(observer) {
94
105
  observer.disconnect();
95
106
  }
@@ -104,22 +115,18 @@ $.fn.sticky = function(parameters) {
104
115
  },
105
116
 
106
117
  observeChanges: function() {
107
- var
108
- context = $context[0]
109
- ;
110
118
  if('MutationObserver' in window) {
111
- observer = new MutationObserver(function(mutations) {
112
- clearTimeout(module.timer);
113
- module.timer = setTimeout(function() {
114
- module.verbose('DOM tree modified, updating sticky menu', mutations);
115
- module.refresh();
116
- }, 100);
119
+ documentObserver = new MutationObserver(module.event.documentChanged);
120
+ observer = new MutationObserver(module.event.changed);
121
+ documentObserver.observe(document, {
122
+ childList : true,
123
+ subtree : true
117
124
  });
118
125
  observer.observe(element, {
119
126
  childList : true,
120
127
  subtree : true
121
128
  });
122
- observer.observe(context, {
129
+ observer.observe($context[0], {
123
130
  childList : true,
124
131
  subtree : true
125
132
  });
@@ -171,6 +178,25 @@ $.fn.sticky = function(parameters) {
171
178
  },
172
179
 
173
180
  event: {
181
+ changed: function(mutations) {
182
+ clearTimeout(module.timer);
183
+ module.timer = setTimeout(function() {
184
+ module.verbose('DOM tree modified, updating sticky menu', mutations);
185
+ module.refresh();
186
+ }, 100);
187
+ },
188
+ documentChanged: function(mutations) {
189
+ [].forEach.call(mutations, function(mutation) {
190
+ if(mutation.removedNodes) {
191
+ [].forEach.call(mutation.removedNodes, function(node) {
192
+ if(node == element || $(node).find(element).length > 0) {
193
+ module.debug('Element removed from DOM, tearing down events');
194
+ module.destroy();
195
+ }
196
+ });
197
+ }
198
+ });
199
+ },
174
200
  load: function() {
175
201
  module.verbose('Page contents finished loading');
176
202
  requestAnimationFrame(module.refresh);
@@ -643,7 +669,7 @@ $.fn.sticky = function(parameters) {
643
669
  },
644
670
 
645
671
  reset: function() {
646
- module.debug('Reseting elements position');
672
+ module.debug('Resetting elements position');
647
673
  module.unbind();
648
674
  module.unfix();
649
675
  module.resetCSS();
@@ -688,7 +714,7 @@ $.fn.sticky = function(parameters) {
688
714
  }
689
715
  },
690
716
  debug: function() {
691
- if(settings.debug) {
717
+ if(!settings.silent && settings.debug) {
692
718
  if(settings.performance) {
693
719
  module.performance.log(arguments);
694
720
  }
@@ -699,7 +725,7 @@ $.fn.sticky = function(parameters) {
699
725
  }
700
726
  },
701
727
  verbose: function() {
702
- if(settings.verbose && settings.debug) {
728
+ if(!settings.silent && settings.verbose && settings.debug) {
703
729
  if(settings.performance) {
704
730
  module.performance.log(arguments);
705
731
  }
@@ -710,8 +736,10 @@ $.fn.sticky = function(parameters) {
710
736
  }
711
737
  },
712
738
  error: function() {
713
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
714
- module.error.apply(console, arguments);
739
+ if(!settings.silent) {
740
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
741
+ module.error.apply(console, arguments);
742
+ }
715
743
  },
716
744
  performance: {
717
745
  log: function(message) {
@@ -845,6 +873,7 @@ $.fn.sticky.settings = {
845
873
  name : 'Sticky',
846
874
  namespace : 'sticky',
847
875
 
876
+ silent : false,
848
877
  debug : false,
849
878
  verbose : true,
850
879
  performance : true,
@@ -888,7 +917,7 @@ $.fn.sticky.settings = {
888
917
 
889
918
  error : {
890
919
  container : 'Sticky element must be inside a relative container',
891
- visible : 'Element is hidden, you must call refresh after element becomes visible',
920
+ visible : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.',
892
921
  method : 'The method you called is not defined.',
893
922
  invalidContext : 'Context specified does not exist',
894
923
  elementSize : 'Sticky element is larger than its container, cannot create sticky.'
@@ -904,4 +933,4 @@ $.fn.sticky.settings = {
904
933
 
905
934
  };
906
935
 
907
- })( jQuery, window, document );
936
+ })( jQuery, window, document );
@@ -3,7 +3,6 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2015 Contributors
7
6
  * Released under the MIT license
8
7
  * http://opensource.org/licenses/MIT
9
8
  *
@@ -13,6 +12,13 @@
13
12
 
14
13
  "use strict";
15
14
 
15
+ window = (typeof window != 'undefined' && window.Math == Math)
16
+ ? window
17
+ : (typeof self != 'undefined' && self.Math == Math)
18
+ ? self
19
+ : Function('return this')()
20
+ ;
21
+
16
22
  $.fn.tab = function(parameters) {
17
23
 
18
24
  var
@@ -448,7 +454,9 @@ $.fn.tab = function(parameters) {
448
454
  'X-Remote': true
449
455
  },
450
456
  onSuccess : function(response) {
451
- module.cache.add(fullTabPath, response);
457
+ if(settings.cacheType == 'response') {
458
+ module.cache.add(fullTabPath, response);
459
+ }
452
460
  module.update.content(tabPath, response);
453
461
  if(tabPath == activeTabPath) {
454
462
  module.debug('Content loaded', tabPath);
@@ -459,6 +467,9 @@ $.fn.tab = function(parameters) {
459
467
  }
460
468
  settings.onFirstLoad.call($tab[0], tabPath, parameterArray, historyEvent);
461
469
  settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent);
470
+ if(settings.cacheType != 'response') {
471
+ module.cache.add(fullTabPath, $tab.html());
472
+ }
462
473
  },
463
474
  urlData: {
464
475
  tab: fullTabPath
@@ -508,15 +519,19 @@ $.fn.tab = function(parameters) {
508
519
  },
509
520
  tab: function(tabPath) {
510
521
  var
511
- $tab = module.get.tabElement(tabPath),
512
- isActive = $tab.hasClass(className.active)
522
+ $tab = module.get.tabElement(tabPath),
523
+ $deactiveTabs = (settings.deactivate == 'siblings')
524
+ ? $tab.siblings($tabs)
525
+ : $tabs.not($tab),
526
+ isActive = $tab.hasClass(className.active)
513
527
  ;
514
528
  module.verbose('Showing tab content for', $tab);
515
529
  if(!isActive) {
516
530
  $tab
517
531
  .addClass(className.active)
518
- .siblings($tabs)
519
- .removeClass(className.active + ' ' + className.loading)
532
+ ;
533
+ $deactiveTabs
534
+ .removeClass(className.active + ' ' + className.loading)
520
535
  ;
521
536
  if($tab.length > 0) {
522
537
  settings.onVisible.call($tab[0], tabPath);
@@ -525,15 +540,19 @@ $.fn.tab = function(parameters) {
525
540
  },
526
541
  navigation: function(tabPath) {
527
542
  var
528
- $navigation = module.get.navElement(tabPath),
543
+ $navigation = module.get.navElement(tabPath),
544
+ $deactiveNavigation = (settings.deactivate == 'siblings')
545
+ ? $navigation.siblings($allModules)
546
+ : $allModules.not($navigation),
529
547
  isActive = $navigation.hasClass(className.active)
530
548
  ;
531
549
  module.verbose('Activating tab navigation for', $navigation, tabPath);
532
550
  if(!isActive) {
533
551
  $navigation
534
552
  .addClass(className.active)
535
- .siblings($allModules)
536
- .removeClass(className.active + ' ' + className.loading)
553
+ ;
554
+ $deactiveNavigation
555
+ .removeClass(className.active + ' ' + className.loading)
537
556
  ;
538
557
  }
539
558
  }
@@ -656,7 +675,12 @@ $.fn.tab = function(parameters) {
656
675
  $.extend(true, settings, name);
657
676
  }
658
677
  else if(value !== undefined) {
659
- settings[name] = value;
678
+ if($.isPlainObject(settings[name])) {
679
+ $.extend(true, settings[name], value);
680
+ }
681
+ else {
682
+ settings[name] = value;
683
+ }
660
684
  }
661
685
  else {
662
686
  return settings[name];
@@ -674,7 +698,7 @@ $.fn.tab = function(parameters) {
674
698
  }
675
699
  },
676
700
  debug: function() {
677
- if(settings.debug) {
701
+ if(!settings.silent && settings.debug) {
678
702
  if(settings.performance) {
679
703
  module.performance.log(arguments);
680
704
  }
@@ -685,7 +709,7 @@ $.fn.tab = function(parameters) {
685
709
  }
686
710
  },
687
711
  verbose: function() {
688
- if(settings.verbose && settings.debug) {
712
+ if(!settings.silent && settings.verbose && settings.debug) {
689
713
  if(settings.performance) {
690
714
  module.performance.log(arguments);
691
715
  }
@@ -696,8 +720,10 @@ $.fn.tab = function(parameters) {
696
720
  }
697
721
  },
698
722
  error: function() {
699
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
700
- module.error.apply(console, arguments);
723
+ if(!settings.silent) {
724
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
725
+ module.error.apply(console, arguments);
726
+ }
701
727
  },
702
728
  performance: {
703
729
  log: function(message) {
@@ -836,32 +862,36 @@ $.fn.tab.settings = {
836
862
  name : 'Tab',
837
863
  namespace : 'tab',
838
864
 
865
+ silent : false,
839
866
  debug : false,
840
867
  verbose : false,
841
868
  performance : true,
842
869
 
843
- auto : false, // uses pjax style endpoints fetching content from same url with remote-content headers
844
- history : false, // use browser history
845
- historyType : 'hash', // #/ or html5 state
846
- path : false, // base path of url
870
+ auto : false, // uses pjax style endpoints fetching content from same url with remote-content headers
871
+ history : false, // use browser history
872
+ historyType : 'hash', // #/ or html5 state
873
+ path : false, // base path of url
874
+
875
+ context : false, // specify a context that tabs must appear inside
876
+ childrenOnly : false, // use only tabs that are children of context
877
+ maxDepth : 25, // max depth a tab can be nested
847
878
 
848
- context : false, // specify a context that tabs must appear inside
849
- childrenOnly : false, // use only tabs that are children of context
850
- maxDepth : 25, // max depth a tab can be nested
879
+ deactivate : 'siblings', // whether tabs should deactivate sibling menu elements or all elements initialized together
851
880
 
852
- alwaysRefresh : false, // load tab content new every tab click
853
- cache : true, // cache the content requests to pull locally
854
- ignoreFirstLoad : false, // don't load remote content on first load
881
+ alwaysRefresh : false, // load tab content new every tab click
882
+ cache : true, // cache the content requests to pull locally
883
+ cacheType : 'response', // Whether to cache exact response, or to html cache contents after scripts execute
884
+ ignoreFirstLoad : false, // don't load remote content on first load
855
885
 
856
- apiSettings : false, // settings for api call
857
- evaluateScripts : 'once', // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content
886
+ apiSettings : false, // settings for api call
887
+ evaluateScripts : 'once', // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content
858
888
 
859
889
  onFirstLoad : function(tabPath, parameterArray, historyEvent) {}, // called first time loaded
860
890
  onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load
861
891
  onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible
862
892
  onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content
863
893
 
864
- templates : {
894
+ templates : {
865
895
  determineTitle: function(tabArray) {} // returns page title for path
866
896
  },
867
897