causeway-standard-theme
Version:
107 lines (90 loc) • 3.24 kB
JavaScript
(function (window, $) {
'use strict';
// CSS Wizard
var calc_width = function (wiz) {
var width = 0;
$('li', wiz).each(function () {
$(this)[0].style.width = 'auto';
width = width + parseInt($(this)[0].clientWidth, 10);
});
return width;
},
adjust_wizard = function (cssWizard) {
var wizard = cssWizard,
padding = 20,
border = 2,
wizard_width = parseInt($(wizard)[0].clientWidth, 10),
total_steps_width = calc_width(wizard),
description = $('.wizard-description', wizard),
current = $('.current', wizard),
previous = current.prev('li').not(description),
previous2 = previous.add(previous.prev('li')).not(description),
next = current.next('li'),
next2 = next.add(next.next('li')),
desc_width = parseInt(description[0].clientWidth, 10),
curr_width = parseInt(current[0].clientWidth, 10) + 1,
remaining_lis = $('li', wizard).not(description).not(current),
lis_with_current = $('li', wizard).not(description),
steps_count = ($('li', wizard).length) - 1,
available_width = wizard_width - desc_width - curr_width - padding - (border * 2);
if (total_steps_width > wizard_width) {
remaining_lis.css('width', available_width / steps_count);
if (next.length) {
previous.css('width', 1.5 * available_width / steps_count);
} else {
previous2.css('width', 1.5 * available_width / steps_count);
}
if (previous.length) {
next.css('width', 1.5 * available_width / steps_count);
} else {
next2.css('width', 1.5 * available_width / steps_count);
}
current.css({
'width': curr_width
});
} else {
if (Math.round(curr_width) > Math.round((available_width + curr_width) / steps_count)) {
remaining_lis.css('width', available_width / (steps_count - 1));
current.css({
'width': curr_width
});
} else {
lis_with_current.css('width', (available_width + curr_width) / steps_count);
}
}
if(window.Causeway.getDevice() === 'tablet' || window.Causeway.getDevice() === 'mobile') {
(description, current, remaining_lis).css('width', 'auto');
}
},
wizards = $('.wizard'),
navigationPaneRight = $('.navigation-pane-right');
var wizardInit = function () {
if (wizards.length < 1) {
navigationPaneRight.removeClass('has-wizard');
return false;
}
navigationPaneRight.addClass('has-wizard');
wizards.each(function () {
adjust_wizard($(this));
});
$(window).resize(function () {
wizards.each(function () {
adjust_wizard($(this));
});
});
};
window.Causeway.wizard = {};
window.Causeway.wizard.wizardInit = wizardInit;
if(!window.Causeway.isDevice) {
wizardInit();
}
$(window).on('resize', function () {
if(window.Causeway.getDevice() === 'desktop' || window.Causeway.getDevice() === 'lg-desktop') {
wizardInit();
} else {
wizards.each(function () {
adjust_wizard($(this));
});
}
});
}(window, jQuery));