{% set form = _args.form|default(null) %}
{% set categories = _args.categories|default([]) %}
{% set defaultCategory = _args.defaultCategory|default('Default') %}
{% set title = _args.title %}
{% set formId = _args.formId is defined ? _args.formId : null %}
{% set saveTabsState = _args.saveTabsState|default(false) %}
{% if form is not null %}
{% for field in form.children %}
{% if field.vars.categoryName is defined %}
{% if field.vars.categoryName not in categories %}
{% set categories = categories|merge([field.vars.categoryName]) %}
{% endif %}
{% elseif 'hidden' not in field.vars.block_prefixes %}
{% if defaultCategory not in categories %}
{% set categories = categories|merge([defaultCategory]) %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% if categories|length > 1 %}
<style type="text/css">
.cs-console-main-content > form {
display: none;
}
div[data-form-category] {
display: none;
}
</style>
{% embed '@ui/common/navbars/default.html.twig' with {title: title, formId: formId} %}
{% block items %}
{% for category in categories %}
{% include '@ui/common/navbars/items/default.html.twig' with {text: category} %}
{% endfor %}
{% endblock %}
{% endembed %}
{% inline_script %}
<script>
$(function() {
var category,
tabId = 0,
cookieName;
$('body').on('click', 'ul.app-navbar__ul > li', function(e) {
var $target = $(e.target),
$parent = $target.closest('ul.app-navbar__ul'),
form = $parent.data('form');
$(form).show();
category = $target.text().trim();
$parent.find('> li').removeClass('active');
$target.closest('li').addClass('active');
$(form).find('div.form-group[data-form-category][data-form-category!="' + category + '"]').hide();
$(form).find('div.form-group[data-form-category][data-form-category="' + category + '"]').show();
e.preventDefault();
});
{% if saveTabsState %}
var categories,
index;
cookieName = '{{ formId }}-tab';
category = $.cookie(cookieName);
$.removeCookie(cookieName);
// store cookie with category only if form was submitted
$('#{{ formId }}').on('submit', function () {
if (category) {
$.cookie(cookieName, category);
}
});
if (category) {
categories = $('ul[data-form="#{{ formId }}"] li').map(function () {
return $(this).text().trim();
});
index = $.inArray(category, categories);
if (index !== -1) {
tabId = index;
}
}
{% endif %}
$('ul.app-navbar__ul > li').eq(tabId).click();
});
</script>
{% endinline %}
{% endif %}