jquery.meanmenu.min.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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. ? jQuery('.meanmenu-reveal').animate({
  67. left: n,
  68. })
  69. : jQuery('.meanmenu-reveal').css('left', n);
  70. }
  71. },
  72. A = !1,
  73. E = !1;
  74. 'right' === u && (w = 'right:' + m + ';left:auto;'),
  75. 'left' === u && (w = 'left:' + m + ';right:auto;'),
  76. x();
  77. var M = '',
  78. W = function () {
  79. jQuery('.mean-bar,.mean-push').remove(),
  80. jQuery(t).removeClass('mean-container'),
  81. jQuery(n).css('display', g),
  82. (A = !1),
  83. (E = !1),
  84. jQuery(p).removeClass('mean-remove');
  85. },
  86. b = function () {
  87. var e = 'background:' + l + ';color:' + l + ';' + w;
  88. if (o >= a) {
  89. jQuery(p).addClass('mean-remove'),
  90. (E = !0),
  91. jQuery(t).addClass('mean-container'),
  92. jQuery('.mean-container').prepend(
  93. '<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="' +
  94. e +
  95. '">Show Navigation</a><nav class="mean-nav"></nav></div>'
  96. );
  97. var r = jQuery(n).html();
  98. jQuery('.mean-nav').html(r),
  99. Q &&
  100. jQuery(
  101. 'nav.mean-nav ul, nav.mean-nav ul *'
  102. ).each(function () {
  103. jQuery(this).is('.mean-remove')
  104. ? jQuery(this).attr(
  105. 'class',
  106. 'mean-remove'
  107. )
  108. : jQuery(this).removeAttr('class'),
  109. jQuery(this).removeAttr('id');
  110. }),
  111. jQuery(n).before('<div class="mean-push" />'),
  112. jQuery('.mean-push').css('margin-top', c),
  113. jQuery(n).hide(),
  114. jQuery('.meanmenu-reveal').show(),
  115. jQuery(v).html(s),
  116. (M = jQuery(v)),
  117. jQuery('.mean-nav ul').hide(),
  118. h
  119. ? d
  120. ? (jQuery('.mean-nav ul ul').each(
  121. function () {
  122. jQuery(this).children()
  123. .length &&
  124. jQuery(this, 'li:first')
  125. .parent()
  126. .append(
  127. '<a class="mean-expand" href="#" style="font-size: ' +
  128. i +
  129. '">' +
  130. y +
  131. '</a>'
  132. );
  133. }
  134. ),
  135. jQuery('.mean-expand').on(
  136. 'click',
  137. function (e) {
  138. e.preventDefault(),
  139. jQuery(this).hasClass(
  140. 'mean-clicked'
  141. )
  142. ? (jQuery(this).text(y),
  143. jQuery(this)
  144. .prev('ul')
  145. .slideUp(
  146. 300,
  147. function () {}
  148. ))
  149. : (jQuery(this).text(j),
  150. jQuery(this)
  151. .prev('ul')
  152. .slideDown(
  153. 300,
  154. function () {}
  155. )),
  156. jQuery(this).toggleClass(
  157. 'mean-clicked'
  158. );
  159. }
  160. ))
  161. : jQuery('.mean-nav ul ul').show()
  162. : jQuery('.mean-nav ul ul').hide(),
  163. jQuery('.mean-nav ul li')
  164. .last()
  165. .addClass('mean-last'),
  166. M.removeClass('meanclose'),
  167. jQuery(M).click(function (e) {
  168. e.preventDefault(),
  169. A === !1
  170. ? (M.css('text-align', 'center'),
  171. M.css('text-indent', '0'),
  172. M.css('font-size', i),
  173. jQuery(
  174. '.mean-nav ul:first'
  175. ).slideDown(),
  176. (A = !0))
  177. : (jQuery(
  178. '.mean-nav ul:first'
  179. ).slideUp(),
  180. (A = !1)),
  181. M.toggleClass('meanclose'),
  182. jQuery(p).addClass('mean-remove');
  183. }),
  184. f &&
  185. jQuery('.mean-nav ul > li > a:first-child').on(
  186. 'click',
  187. function () {
  188. jQuery('.mean-nav ul:first').slideUp(),
  189. (A = !1),
  190. jQuery(M)
  191. .toggleClass('meanclose')
  192. .html(s);
  193. }
  194. );
  195. } else W();
  196. };
  197. C ||
  198. jQuery(window).resize(function () {
  199. (a =
  200. window.innerWidth ||
  201. document.documentElement.clientWidth),
  202. a > o,
  203. W(),
  204. o >= a ? (b(), x()) : W();
  205. }),
  206. jQuery(window).resize(function () {
  207. (a =
  208. window.innerWidth ||
  209. document.documentElement.clientWidth),
  210. C
  211. ? (x(), o >= a ? E === !1 && b() : W())
  212. : (W(), o >= a && (b(), x()));
  213. }),
  214. b();
  215. });
  216. };
  217. })(jQuery);