less-rails-semantic_ui 2.1.8.2 → 2.2.1.0

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