causeway-standard-theme
Version:
256 lines (214 loc) • 9.09 kB
JavaScript
(function (window, $) {
'use strict';
var siteMenuHolder = $('.navbar.site-menu'),
siteMenu = $('.nav.navbar-nav', siteMenuHolder),
breadcumb = $('.breadcrumb', siteMenuHolder),
additionalInfo= $('.additional-nav-info', siteMenuHolder),
additionalMenu = $('.additional-nav-info .additional-menu');
var getBrowserWidth = function () {
return window.innerWidth;
};
var getBrowserHeight = function () {
return window.innerHeight;
};
var moveElement = function ($el, $dest, pre) {
if (pre) {
$el.clone(true).prependTo($dest);
} else {
$el.clone(true).appendTo($dest);
}
$el.remove();
};
var wrapElement = function (el, wrapper) {
el.wrapAll(wrapper);
};
var unWrapElement = function (el) {
el.unwrap();
};
var browserWidth = getBrowserWidth(),
browserHeight = getBrowserHeight();
if (browserWidth < 992) {
moveElement(breadcumb, additionalMenu)
moveElement(siteMenu, additionalMenu);
wrapElement($('> ol, > ul', additionalMenu), '<div class="site-menu-wrapper" style="height:' + (browserHeight - 80) + 'px">');
$('a', additionalMenu).removeAttr('data-toggle');
$('a', additionalMenu).removeAttr('data-hover');
jQuery(document).on('nf-open', function () {
additionalMenu.removeClass('open');
$('.shell-left-navigation').removeClass('open');
$('body').removeClass('site-menu-open', 'left-nav-open');
$('.resp-back').removeClass('visible');
$('body').addClass('notification-content-open');
});
jQuery(document).on('nf-close', function () {
$('body').removeClass('notification-content-open');
});
additionalMenu.on('click', function (e) {
//e.preventDefault();
if ($('.glyphicon-threeLine-menu', $(this)).is(e.target) || $('> a', additionalMenu).is(e.target)) {
$(this).toggleClass('open');
$('body').toggleClass('site-menu-open');
if ($(this).hasClass('open')) {
$('.resp-back').addClass('visible');
} else {
$('.resp-back').removeClass('visible');
}
}
});
$('.nav.navbar-nav li.dropdown > a, .breadcrumb li.dropdown > a', additionalMenu).on('click', function (e) {
var $this = $(this),
$parent = $this.parent('li.dropdown');
e.preventDefault();
$parent.toggleClass('open');
$('.resp-back > span').text($this.text());
if ($parent.hasClass('open')) {
$('.resp-back > a').addClass('visible');
} else {
$('.resp-back > a').removeClass('visible');
}
});
$('.nav.navbar-nav li.dropdown-submenu > a', additionalMenu).on('click', function (e) {
var $this = $(this),
$parent = $this.parent('li.dropdown-submenu');
e.preventDefault();
$('.resp-back > span').text($this.text());
$parent.toggleClass('open');
});
$('.nav.navbar-nav li > a', additionalMenu).not($('.nav.navbar-nav li.dropdown > a', additionalMenu)).not($('.nav.navbar-nav li.dropdown-submenu > a', additionalMenu)).on('click', function () {
var $this = $(this),
$parents = $this.parents('li.open', additionalMenu);
$parents.removeClass('open');
additionalMenu.removeClass('open');
$('body').removeClass('site-menu-open');
window.location = $this.attr('href');
});
$('.breadcrumb li > a', additionalMenu).not($('.breadcrumb li.dropdown > a', additionalMenu)).not($('.breadcrumb li.dropdown-submenu > a', additionalMenu)).on('click', function () {
var $this = $(this),
$parents = $this.parents('li.open', additionalMenu);
$parents.removeClass('open');
additionalMenu.removeClass('open');
$('body').removeClass('site-menu-open');
window.location = $this.attr('href');
});
$('.resp-back > a').on('click', function () {
var toBeClosedObject = $('li.dropdown-submenu.open');
toBeClosedObject = toBeClosedObject.length === 0 ? $('li.dropdown.open') : toBeClosedObject;
var length = toBeClosedObject.length;
var toBeClosed = toBeClosedObject[length - 1];
$(toBeClosed).removeClass('open');
var title = $('a:first', $('.navbar-nav li.open')).last().text() || 'MENU';
$('.resp-back > span').text(title);
if (title === 'MENU') {
$(this).removeClass('visible');
}
});
// left navigation
$('.divider-navigation .handle').on('click', function () {
$(this).parents('.shell-left-navigation').toggleClass('open');
$('body').toggleClass('left-nav-open');
});
}
// Wizard
if(window.Causeway.getDevice() !== 'lg-desktop' && window.Causeway.getDevice() !== 'desktop') {
var wizard = $('.wizard');
wizard.each(function() {
var $this = $(this),
steps = $('li', $this).not('.wizard-description'),
noOfSteps = steps.length,
currentStep = steps.filter('.current'),
currentStepNo = $('span', currentStep).text();
currentStep.append($('<span class="step-counter">').text(currentStepNo + '/' + noOfSteps));
});
}
// Date and Time field
var datetime = $('.form-group.date, .form-group.time').not('.disabled, .readonly'),
tField = $('input[type=text]', datetime);
window.Causeway.readOnlyForDateAndTime = function(field, bw) {
field.each(function(){
var $this = $(this);
if (bw < 992) {
if (!$this.attr('readonly')) {
$this.attr('readonly', 'readonly');
$this.addClass('toggle-device-readonly');
}
} else {
$this.removeAttr('readonly');
$this.removeClass('toggle-device-readonly');
}
})
};
window.Causeway.readOnlyForDateAndTime(tField, browserWidth);
$(window).resize(function () {
browserWidth = getBrowserWidth();
browserHeight = getBrowserHeight();
if (browserWidth < 992) {
if (additionalMenu.has('.nav.navbar-nav').length === 0 || additionalMenu.has('.breadcrumb').length === 0) {
var updatedSiteHeader = $('.breadcrumb', siteMenuHolder);
var updatedSiteMenu = $('.nav.navbar-nav', siteMenuHolder);
moveElement(updatedSiteHeader, additionalMenu);
moveElement(updatedSiteMenu, additionalMenu);
wrapElement($('> ol, > ul', additionalMenu), '<div class="site-menu-wrapper">');
}
if ($('.navigation-pane-left').length > 0) {
// left navigation reset style on resize
$('.navigation-pane-left')[0].style.height = '';
$('.navigation-pane-left')[0].style.width = '';
$('.divider-navigation')[0].style.left = '';
$('.navigation-pane-right')[0].style.marginLeft = '';
//console.log('resize');
}
// two Pane Vertical
if ($('.two-pane-vertical').length > 0) {
if ($('.two-pane-vertical').find('.tab-pane').length === 0) {
var pane = $('.pane-left,.pane-right', $('.two-pane-vertical'));
pane.wrap('<div class=tab-pane>');
var tabPane = $('.tab-pane', $('.two-pane-vertical'));
tabPane.first().addClass('active');
tabPane.wrapAll('<div class=tab-content>');
$('.nav-tabs a').each(function (i) {
var idVal = $(this).attr('href').replace('#', '');
tabPane[i].id = idVal;
});
}
}
// two Pane Horizontal
if ($('.two-pane-horizontal').length > 0) {
if ($('.two-pane-horizontal').find('.tab-pane').length === 0) {
var paneH = $('.pane-top,.pane-bottom', $('.two-pane-horizontal'));
paneH.wrap('<div class=tab-pane>');
var tabPaneH = $('.tab-pane', $('.two-pane-horizontal'));
tabPaneH.first().addClass('active');
tabPaneH.wrapAll('<div class=tab-content>');
$('.nav-tabs a').each(function (i) {
var idVal = $(this).attr('href').replace('#', '');
tabPaneH[i].id = idVal;
});
}
}
} else {
if (siteMenuHolder.has('>.nav.navbar-nav').length === 0 || siteMenuHolder.has('.breadcrumb').length === 0) {
var movedSiteHeader = $('.breadcrumb', additionalMenu);
var movedSiteMenu = $('.nav.navbar-nav', additionalMenu);
moveElement(movedSiteHeader, additionalInfo, 'pre');
moveElement(movedSiteMenu, siteMenuHolder, 'pre');
unWrapElement($('> div > ul.dropdown-menu', additionalMenu));
}
// two Pane Vertical
if ($('.two-pane-vertical').length > 0) {
if ($('.two-pane-vertical').find('.tab-content').length > 0) {
var pane1 = $('.pane-left,.pane-right', $('.two-pane-vertical'));
pane1.unwrap().unwrap();
}
}
// two Pane Horizontal
if ($('.two-pane-horizontal').length > 0) {
if ($('.two-pane-horizontal').find('.tab-content').length > 0) {
var pane2 = $('.pane-top,.pane-bottom', $('.two-pane-horizontal'));
pane2.unwrap().unwrap();
}
}
}
$('.site-menu-wrapper').height(browserHeight - 80);
window.Causeway.readOnlyForDateAndTime(tField, browserWidth);
});
}(window, jQuery));