{% extends '@SyliusShop/layout.html.twig' %}
{% form_theme form with ['@SyliusUi/Form/theme.html.twig', 'Context/Shop/ProductCategory/formTheme.html.twig'] %}
{% import '@SyliusUi/Macro/messages.html.twig' as messages %}
{% import '@SyliusUi/Macro/pagination.html.twig' as pagination %}
{% block content %}
{{ form_start(form, {'method': 'GET', 'attr': {'class': 'ui loadable form', 'id': 'category-filters-form'}}) }}
{# Mobile Filter Toggle Button #}
{% include 'bundles/BitBagSyliusElasticsearchPlugin/Shop/Filters/mobileFilters.twig' with {'filterForm': form} %}
<div class="ui stackable grid">
<div class="four wide column">
{% embed 'bundles/BitBagSyliusElasticsearchPlugin/Shop/Filters/filters.twig' with {
'filterForm': form,
'resetUrl': path('bitbag_sylius_elasticsearch_plugin_shop_list_products', {'slug': taxon.slug, 'products': 'products'|trans, 'product_category': 'product_category'|trans, '_locale': app.request.locale})
} %}
{% block formContent %}
{% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_filterForm.html.twig' %}
{% endblock %}
{% block extraFilters %}
<div class="ui accordion filters-accordion">
<div class="title no-padding">
<div class="header item">
{{ 'app.ui.price_range'|trans }}
<i class="dropdown icon" style="margin-inline-start: auto;"></i>
</div>
</div>
<div class="content no-padding">
{% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_filterPrice.html.twig' %}
</div>
</div>
{% endblock %}
{% endembed %}
</div>
<div class="twelve wide column">
<h1 class="ui header category-page-header">
{{ taxon.name }}
</h1>
{{ bitbag_cms_render_banner('Context/Shop/Blog/banner.html.twig') }}
{% include 'Context/Common/Banner/_categoryBanner.html.twig' %}
<div class="sub header expandable-content-container">
<span class="expandable-content text-sm">{{ taxon.description }}</span>
</div>
<div class="ui divider"></div>
<div class="ui segment product-listing-sorting-bar no-border no-background no-shadow">
<div class="ui stackable grid">
<div class="eleven wide column no-padding no-border">
{# Product search disabled due to performance issues - needs optimization before re-enabling
{# <div class="ui search max-width-350" id="products-search">
<div class="ui fluid left icon input input-bg">
{{ form_widget(form.name, {'attr': {'placeholder': 'sylius.ui.search', 'class': 'prompt'}}) }}
<i class="search icon"></i>
</div>
</div> #}
</div>
<div class="five wide column no-padding no-border sorting-buttons">
{% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_sorting.html.twig' %}
{% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_pagination.html.twig' %}
</div>
</div>
</div>
{% if products|length > 0 %}
<div class="category-products-grid" id="products">
{% for product in products %}
{% include '@SyliusShop/Product/_box.html.twig' %}
{% endfor %}
</div>
<div class="ui hidden divider"></div>
{{ pagination.simple(products) }}
{% else %}
{{ messages.info('sylius.ui.no_results_to_display') }}
{% endif %}
</div>
</div>
<button type="submit" style="display: none">
<i class="search icon"></i>
{{ 'bitbag_sylius_elasticsearch_plugin.ui.filter'|trans }}
</button>
{{ form_end(form, {'render_rest': false}) }}
<script>
window.translations = {
readMore: "{{ 'app.ui.read_more'|trans|lower }}",
readLess: "{{ 'app.ui.read_less'|trans|lower }}"
};
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('category-filters-form');
if (!form) {
return;
}
const shouldDisable = (el) => {
if (el.disabled) {
return false;
}
if (el.type === 'checkbox' || el.type === 'radio') {
return !el.checked;
}
if (el.tagName === 'SELECT' && el.multiple) {
return el.selectedOptions.length === 0;
}
return el.value === '' || el.value === null;
};
form.addEventListener('submit', () => {
form.querySelectorAll('input, select, textarea').forEach((el) => {
if (shouldDisable(el)) {
el.disabled = true;
}
});
});
});
</script>
{% endblock %}