jquery.meanmenu.min.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. !(function($) {
  2. 'use strict';
  3. $.fn.meanmenu = function(e) {
  4. var n = {
  5. meanMenuTarget: jQuery(this),
  6. meanMenuContainer: 'body',
  7. meanMenuClose: '<span /><span /><span />',
  8. meanMenuCloseSize: '18px',
  9. meanMenuOpen: '<span /><span /><span />',
  10. meanRevealPosition: 'right',
  11. meanRevealPositionDistance: '0',
  12. meanRevealColour: '',
  13. meanScreenWidth: '480',
  14. meanNavPush: '',
  15. meanShowChildren: !0,
  16. meanExpandableChildren: !0,
  17. meanExpand: '+',
  18. meanContract: '-',
  19. meanRemoveAttrs: !1,
  20. onePage: !1,
  21. meanDisplay: 'block',
  22. removeElements: '',
  23. };
  24. e = $.extend(n, e);
  25. var a = window.innerWidth || document.documentElement.clientWidth;
  26. return this.each(function() {
  27. var n = e.meanMenuTarget,
  28. t = e.meanMenuContainer,
  29. r = e.meanMenuClose,
  30. i = e.meanMenuCloseSize,
  31. s = e.meanMenuOpen,
  32. u = e.meanRevealPosition,
  33. m = e.meanRevealPositionDistance,
  34. l = e.meanRevealColour,
  35. o = e.meanScreenWidth,
  36. c = e.meanNavPush,
  37. v = '.meanmenu-reveal',
  38. h = e.meanShowChildren,
  39. d = e.meanExpandableChildren,
  40. y = e.meanExpand,
  41. j = e.meanContract,
  42. Q = e.meanRemoveAttrs,
  43. f = e.onePage,
  44. g = e.meanDisplay,
  45. p = e.removeElements,
  46. C = !1;
  47. (navigator.userAgent.match(/iPhone/i) ||
  48. navigator.userAgent.match(/iPod/i) ||
  49. navigator.userAgent.match(/iPad/i) ||
  50. navigator.userAgent.match(/Android/i) ||
  51. navigator.userAgent.match(/Blackberry/i) ||
  52. navigator.userAgent.match(/Windows Phone/i)) &&
  53. (C = !0),
  54. (navigator.userAgent.match(/MSIE 8/i) ||
  55. navigator.userAgent.match(/MSIE 7/i)) &&
  56. jQuery('html').css('overflow-y', 'scroll');
  57. var w = '',
  58. x = function() {
  59. if ('center' === u) {
  60. var e =
  61. window.innerWidth ||
  62. document.documentElement.clientWidth,
  63. n = e / 2 - 22 + 'px';
  64. (w = 'left:' + n + ';right:auto;'),
  65. C
  66. ?
  67. jQuery('.meanmenu-reveal').animate({
  68. left: n,
  69. }) :
  70. jQuery('.meanmenu-reveal').css('left', n);
  71. }
  72. },
  73. A = !1,
  74. E = !1;
  75. 'right' === u && (w = 'right:' + m + ';left:auto;'),
  76. 'left' === u && (w = 'left:' + m + ';right:auto;'),
  77. x();
  78. var M = '',
  79. W = function() {
  80. jQuery('.mean-bar,.mean-push').remove(),
  81. jQuery(t).removeClass('mean-container'),
  82. jQuery(n).css('display', g),
  83. (A = !1),
  84. (E = !1),
  85. jQuery(p).removeClass('mean-remove');
  86. },
  87. b = function() {
  88. var e = 'background:' + l + ';color:' + l + ';' + w;
  89. if (o >= a) {
  90. jQuery(p).addClass('mean-remove'),
  91. (E = !0),
  92. jQuery(t).addClass('mean-container'),
  93. jQuery('.mean-container').prepend(
  94. '<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="' +
  95. e +
  96. '">Show Navigation</a><nav class="mean-nav"></nav></div>'
  97. );
  98. var r = jQuery(n).html();
  99. jQuery('.mean-nav').html(r),
  100. Q &&
  101. jQuery(
  102. 'nav.mean-nav ul, nav.mean-nav ul *'
  103. ).each(function() {
  104. jQuery(this).is('.mean-remove') ?
  105. jQuery(this).attr(
  106. 'class',
  107. 'mean-remove'
  108. ) :
  109. jQuery(this).removeAttr('class'),
  110. jQuery(this).removeAttr('id');
  111. }),
  112. jQuery(n).before('<div class="mean-push" />'),
  113. jQuery('.mean-push').css('margin-top', c),
  114. jQuery(n).hide(),
  115. jQuery('.meanmenu-reveal').show(),
  116. jQuery(v).html(s),
  117. (M = jQuery(v)),
  118. jQuery('.mean-nav ul').hide(),
  119. h ?
  120. d ?
  121. (jQuery('.mean-nav ul ul').each(
  122. function() {
  123. jQuery(this).children()
  124. .length &&
  125. jQuery(this, 'li:first')
  126. .parent()
  127. .append(
  128. '<a class="mean-expand" href="#" style="font-size: ' +
  129. i +
  130. '">' +
  131. y +
  132. '</a>'
  133. );
  134. }
  135. ),
  136. jQuery('.mean-expand').on(
  137. 'click',
  138. function(e) {
  139. e.preventDefault(),
  140. jQuery(this).hasClass(
  141. 'mean-clicked'
  142. ) ?
  143. (jQuery(this).text(y),
  144. jQuery(this)
  145. .prev('ul')
  146. .slideUp(
  147. 300,
  148. function() {}
  149. )) :
  150. (jQuery(this).text(j),
  151. jQuery(this)
  152. .prev('ul')
  153. .slideDown(
  154. 300,
  155. function() {}
  156. )),
  157. jQuery(this).toggleClass(
  158. 'mean-clicked'
  159. );
  160. }
  161. )) :
  162. jQuery('.mean-nav ul ul').show() :
  163. jQuery('.mean-nav ul ul').hide(),
  164. jQuery('.mean-nav ul li')
  165. .last()
  166. .addClass('mean-last'),
  167. M.removeClass('meanclose'),
  168. jQuery(M).click(function(e) {
  169. e.preventDefault(),
  170. A === !1 ?
  171. (M.css('text-align', 'center'),
  172. M.css('text-indent', '0'),
  173. M.css('font-size', i),
  174. jQuery(
  175. '.mean-nav ul:first'
  176. ).slideDown(),
  177. (A = !0)) :
  178. (jQuery(
  179. '.mean-nav ul:first'
  180. ).slideUp(),
  181. (A = !1)),
  182. M.toggleClass('meanclose'),
  183. jQuery(p).addClass('mean-remove');
  184. }),
  185. f &&
  186. jQuery('.mean-nav ul > li > a:first-child').on(
  187. 'click',
  188. function() {
  189. jQuery('.mean-nav ul:first').slideUp(),
  190. (A = !1),
  191. jQuery(M)
  192. .toggleClass('meanclose')
  193. .html(s);
  194. }
  195. );
  196. } else W();
  197. };
  198. C ||
  199. jQuery(window).resize(function() {
  200. (a =
  201. window.innerWidth ||
  202. document.documentElement.clientWidth),
  203. a > o,
  204. W(),
  205. o >= a ? (b(), x()) : W();
  206. }),
  207. jQuery(window).resize(function() {
  208. (a =
  209. window.innerWidth ||
  210. document.documentElement.clientWidth),
  211. C
  212. ?
  213. (x(), o >= a ? E === !1 && b() : W()) :
  214. (W(), o >= a && (b(), x()));
  215. }),
  216. b();
  217. });
  218. };
  219. })(jQuery);