assets/javascripts/bookingsync/menu.js in bootstrap-bookingsync-sass-1.0.0.beta2 vs assets/javascripts/bookingsync/menu.js in bootstrap-bookingsync-sass-1.0.0.beta3

- old
+ new

@@ -6,38 +6,84 @@ * ======================================================================== */ +function ($) { 'use strict'; + $(document).on('click', '[data-toggle="menu-expand"]', function (event) { + var element = $(this); + var menu = $(element.data('menu')) + var submenu = $(element.data('submenu')); + + if (submenu.hasClass('menu-submenu-collapsed')) { + menu.find('.active').removeClass('active'); + element.parents('li').addClass('active'); + menu.addClass('menu-collapsed'); + menu.removeClass('menu-hovered'); + submenu.removeClass('menu-submenu-collapsed'); + } else { + menu.removeClass('menu-collapsed'); + menu.removeClass('menu-hovered'); + submenu.addClass('menu-submenu-collapsed'); + } + }); + + var menuTimeout; - $(document).on('mouseenter', '.menu-collapsed', function (event) { + $(document).on('mouseenter', '.menu-folded, .menu-collapsed', function (event) { var element = $(this); if (!menuTimeout) { menuTimeout = window.setTimeout(function() { element.addClass('menu-hovered'); }, 500); } $(element.data('target')).toggleClass(element.data('value')); }); - $(document).on('mouseleave', '.menu-collapsed', function (event) { + $(document).on('mouseleave', '.menu-folded, .menu-collapsed', function (event) { var element = $(this); if (menuTimeout) { window.clearTimeout(menuTimeout); menuTimeout = null; element.removeClass('menu-hovered'); } }); - $(document).on('click', '.navbar-toggle.menu-toggle', function(event) { + $(document).on('click', '.menu-toggle-parent-frame', function(event) { parent.postMessage("bookingsync:menu:toggle", "*"); }); - $(window).load(function() { - if ($('iframe.iframe-fullscreen').length > 0) { + $(window).ready(function() { + var iframes = $('iframe.iframe-fullscreen'); + var toggleButton = $('.menu-toggle-parent-frame'); + + // in parent iframe + if (iframes.length > 0) { + // Notify ability to hide parent menu-toggle button + iframes.each(function(index) { + var iframe = this; + $(iframe).ready(function() { + window.setTimeout(function() { + iframe.contentWindow.postMessage("bookingsync:menu:toggle-button:hideable", "*"); + }, 1000); + }); + }); + window.addEventListener("message", function(event) { + if (event.data === "bookingsync:menu:toggle-button:hide") { + $('.menu-toggle-hideable').hide(); + } + if (event.data === "bookingsync:menu:toggle") { $('body').toggleClass("menu-open"); } }, false); + } + + // in app iframe + if (toggleButton.length > 0) { + window.addEventListener("message", function(event) { + if (event.data === "bookingsync:menu:toggle-button:hideable") { + parent.postMessage("bookingsync:menu:toggle-button:hide", "*"); + } + }); } }); }(jQuery);