templates/bundles/BitBagSyliusElasticsearchPlugin/Shop/Product/index.html.twig line 1

Open in your IDE?
  1. {% extends '@SyliusShop/layout.html.twig' %}
  2. {% form_theme form with ['@SyliusUi/Form/theme.html.twig', 'Context/Shop/ProductCategory/formTheme.html.twig'] %}
  3. {% import '@SyliusUi/Macro/messages.html.twig' as messages %}
  4. {% import '@SyliusUi/Macro/pagination.html.twig' as pagination %}
  5. {% block content %}
  6.     {{ form_start(form, {'method': 'GET', 'attr': {'class': 'ui loadable form', 'id': 'category-filters-form'}}) }}
  7.     {# Mobile Filter Toggle Button #}
  8.     {% include 'bundles/BitBagSyliusElasticsearchPlugin/Shop/Filters/mobileFilters.twig' with {'filterForm': form} %}
  9.     <div class="ui stackable grid">
  10.         <div class="four wide column">
  11.             {% embed 'bundles/BitBagSyliusElasticsearchPlugin/Shop/Filters/filters.twig' with {
  12.                 'filterForm': form,
  13.                 'resetUrl': path('bitbag_sylius_elasticsearch_plugin_shop_list_products', {'slug': taxon.slug, 'products': 'products'|trans, 'product_category': 'product_category'|trans, '_locale': app.request.locale})
  14.             } %}
  15.                 {% block formContent %}
  16.                     {% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_filterForm.html.twig' %}
  17.                 {% endblock %}
  18.                 {% block extraFilters %}
  19.                     <div class="ui accordion filters-accordion">
  20.                         <div class="title no-padding">
  21.                             <div class="header item">
  22.                                 {{ 'app.ui.price_range'|trans }}
  23.                                 <i class="dropdown icon" style="margin-inline-start: auto;"></i>
  24.                             </div>
  25.                         </div>
  26.                         <div class="content no-padding">
  27.                             {% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_filterPrice.html.twig' %}
  28.                         </div>
  29.                     </div>
  30.                 {% endblock %}
  31.             {% endembed %}
  32.         </div>
  33.         <div class="twelve wide column">
  34.             <h1 class="ui header category-page-header">
  35.                 {{ taxon.name }}
  36.             </h1>
  37.             {{ bitbag_cms_render_banner('Context/Shop/Blog/banner.html.twig') }}
  38.             {% include 'Context/Common/Banner/_categoryBanner.html.twig' %}
  39.             <div class="sub header expandable-content-container">
  40.                 <span class="expandable-content text-sm">{{ taxon.description }}</span>
  41.             </div>
  42.             <div class="ui divider"></div>
  43.             <div class="ui segment product-listing-sorting-bar no-border no-background no-shadow">
  44.                 <div class="ui stackable grid">
  45.                     <div class="eleven wide column no-padding no-border">
  46.                         {# Product search disabled due to performance issues - needs optimization before re-enabling
  47.                         {# <div class="ui search max-width-350" id="products-search">
  48.                             <div class="ui fluid left icon input input-bg">
  49.                                 {{ form_widget(form.name, {'attr': {'placeholder': 'sylius.ui.search', 'class': 'prompt'}}) }}
  50.                                 <i class="search icon"></i>
  51.                             </div>
  52.                         </div> #}
  53.                     </div>
  54.                     <div class="five wide column no-padding no-border sorting-buttons">
  55.                         {% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_sorting.html.twig' %}
  56.                         {% include '@BitBagSyliusElasticsearchPlugin/Shop/Product/Index/_pagination.html.twig' %}
  57.                     </div>
  58.                 </div>
  59.             </div>
  60.             {% if products|length > 0 %}
  61.                 <div class="category-products-grid" id="products">
  62.                     {% for product in products %}
  63.                         {% include '@SyliusShop/Product/_box.html.twig' %}
  64.                     {% endfor %}
  65.                 </div>
  66.                 <div class="ui hidden divider"></div>
  67.                 {{ pagination.simple(products) }}
  68.             {% else %}
  69.                 {{ messages.info('sylius.ui.no_results_to_display') }}
  70.             {% endif %}
  71.         </div>
  72.     </div>
  73.     <button type="submit" style="display: none">
  74.         <i class="search icon"></i>
  75.         {{ 'bitbag_sylius_elasticsearch_plugin.ui.filter'|trans }}
  76.     </button>
  77.     {{ form_end(form, {'render_rest': false}) }}
  78.     <script>
  79.         window.translations = {
  80.             readMore: "{{ 'app.ui.read_more'|trans|lower }}",
  81.             readLess: "{{ 'app.ui.read_less'|trans|lower }}"
  82.         };
  83.         document.addEventListener('DOMContentLoaded', () => {
  84.             const form = document.getElementById('category-filters-form');
  85.             if (!form) {
  86.                 return;
  87.             }
  88.             const shouldDisable = (el) => {
  89.                 if (el.disabled) {
  90.                     return false;
  91.                 }
  92.                 if (el.type === 'checkbox' || el.type === 'radio') {
  93.                     return !el.checked;
  94.                 }
  95.                 if (el.tagName === 'SELECT' && el.multiple) {
  96.                     return el.selectedOptions.length === 0;
  97.                 }
  98.                 return el.value === '' || el.value === null;
  99.             };
  100.             form.addEventListener('submit', () => {
  101.                 form.querySelectorAll('input, select, textarea').forEach((el) => {
  102.                     if (shouldDisable(el)) {
  103.                         el.disabled = true;
  104.                     }
  105.                 });
  106.             });
  107.         });
  108.     </script>
  109. {% endblock %}