Response Menu

by Sam Fereday

JavaScript

(function ($) {
	$.fn.menumaker = function (options) {

		var breakAtWidth = 1024;

		var cssmenu = $(this), settings = $.extend({
			title: "Menu",
			format: "dropdown",
			sticky: false
		}, options);

		return this.each(function () {
			$("#menu-button").on('click', function () {
				$(this).toggleClass('menu-opened');
				$(this).find('.hamburger').toggleClass('hamburger--collapse is-active');
				var mainmenu = $('.menu-root');
				if (mainmenu.hasClass('open')) {
					mainmenu.slideUp('fast').removeClass('open');
				}
				else {
					mainmenu.slideDown('fast').addClass('open');
					if (settings.format === "dropdown") {
						mainmenu.find('ul').slideDown('fast');
					}
				}
			});

			cssmenu.find('li ul').parent().addClass('has-sub');

			multiTg = function () {
				cssmenu.find(".has-sub").prepend('<span class="submenu-button"></span>');
				cssmenu.find('.submenu-button').on('click', function () {
					$(this).toggleClass('submenu-opened');
					if ($(this).siblings('ul').hasClass('open')) {
						$(this).siblings('ul').removeClass('open').slideUp('fast');
					}
					else {
						$(this).siblings('ul').addClass('open').slideDown('fast');
					}
				});
			};

			if (settings.format === 'multitoggle') multiTg();
			else cssmenu.addClass('dropdown');

			if (settings.sticky === true) cssmenu.css('position', 'fixed');

			resizeFix = function () {
				if ($(window).width() > breakAtWidth) {
					cssmenu.find('ul').slideDown('fast');
				}

				if ($(window).width() <= breakAtWidth) {
					//cssmenu.find('ul').slideUp('fast').removeClass('open');
				}
			};
			resizeFix();
			return $(window).on('resize', resizeFix);

		});
	};
})(jQuery);