templates/component/header/filter_bar.html.twig line 1

Open in your IDE?
  1. {# 
  2.     component: filter bar
  3.     research: { (Présente à la page recherche)
  4.         searchItem {string}: Intitulé de l'élément recherché (Hôtel seul, Thalasso avec hébergement, Thalasso & SPA ou Idées cadeaux)
  5.         searchResults {string}: Nombre d'éléments trouvés pendant la recherche
  6.     }
  7. #}
  8. {% set jsComponentId = "filter-bar" %}
  9. {% if selected_params is defined %}
  10.     {% if selected_params.date_start is defined %}
  11.         {% set selected_date = selected_params.date_start|replace({'/': '-'})|date("m/d/Y") %}
  12.     {% else %}
  13.         {% set selected_date = "now"|date("m/d/Y") %}
  14.     {% endif %}
  15.     {% set data = getFilterBarParams(app.request.getLocale() ,selected_params) %}
  16. {% else %}
  17.     {% set data = getFilterBarParams( app.request.getLocale() ) %}
  18.     {% set selected_date =  "now"|date("m/d/Y") %}
  19. {% endif %}
  20. {% set props = {
  21.         bookingtitle:null,
  22.         research:{
  23.             searchItem: null,
  24.             searchItemId: null,
  25.             searchResults: null,
  26.             selected_date: selected_date,
  27.         }
  28. }|merge(props|default({}))  %}
  29. {% if app.request.getLocale() == "en" %}
  30.     {% set route_search = "render_mlc_recherche_en" %}
  31. {% else %}
  32.     {% set route_search = "render_mlc_recherche" %}
  33. {% endif %}
  34. <form action="{{ path('' ~ route_search ,{_locale:app.request.getLocale()}) }}" method="POST" class="l-container FilterBar-component FilterBar" data-component="{{ jsComponentId }}" data-lang="{{ app.request.getLocale() }}" data-research="{{ props.research|json_encode() }}" data-selected="{{ data.selected|json_encode() }}" data-setsitems="{{ data.setsitems|json_encode() }}" data-bookingtitle="{{ props.bookingtitle|json_encode() }}">
  35.     <div class="FilterBar-searchResults" v-if="research.searchResults">
  36.         <p v-html="research.searchResults"></p>
  37.     </div>
  38.     <div class="FilterBar-container">
  39.         <div class="FilterBar-items">
  40.             <div class="FilterBar-selected" :class="{research: research.searchResults}">
  41.                 <v-select :options="options" value='id' label="label" item-value="id" item-text="label" v-model="selected_option" class="FilterBar-select" :searchable="false" :clearable="false" @input="onChange"></v-select>
  42.                 <input type="hidden" :value="selected_option.id" name="type_bar"/>
  43.             </div>
  44.             <div class="FilterBar-ItemContainer" v-for="setItem in set">
  45.                 <div class="FilterBar-Item">
  46.                     <div class="FilterBar-CalendarItem" v-if="setItem.item === 'calendar'">
  47.                         <div data-component="svg" class="Svg-component" v-bind:class="setItem.icon">
  48.                             <svg>
  49.                                 <use v-bind="{ 'xlink:href':  '#' + setItem.icon }"/>
  50.                             </svg>
  51.                         </div>
  52.                         <div class="FilterBar-SelectItem-details">
  53.                             <span class="FilterBar-ItemTitle" v-if="setItem">${ setItem.text }</span>
  54.                             <datepicker name="date_start" class="FilterBar-datepicker" :monday-first="true" :disabled-dates="disabledDates" :format="customFormatter" :language="datePickerLang" ref="datepicker" v-model="datepicker_value"></datepicker>
  55.                             <div class="vs__actions">
  56.                                 <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" role="presentation" class="vs__open-indicator">
  57.                                     <path d="M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"></path>
  58.                                 </svg>
  59.                             </div>
  60.                         </div>
  61.                     </div>
  62.                     <div class="FilterBar-SelectItem" v-else>
  63.                         <div data-component="svg" class="Svg-component" v-bind:class="setItem.icon">
  64.                             <svg>
  65.                                 <use v-bind="{ 'xlink:href':  '#' + setItem.icon }"/>
  66.                             </svg>
  67.                         </div>
  68.                         <div class="FilterBar-SelectItem-details">
  69.                             <span class="FilterBar-ItemTitle" v-if="setItem">${ setItem.text }</span>
  70.                             <v-select :options="setItem.values" value='id' label="text" item-value="id" item-text="text" v-model="setItem.value" class="FilterBar-select" :searchable="false" :clearable="false"></v-select>
  71.                             <input type="hidden" :value="setItem.value.id" :name="setItem.item"/>
  72.                         </div>
  73.                     </div>
  74.                 </div>
  75.             </div>
  76.         </div>
  77.         {# Submit button #}
  78.         {% include "component/button.html.twig" with {
  79.             class: 'BookingSearch-submitButton',
  80.             props: {
  81.                 text: "filtre_bar.search.libelle"|trans,
  82.                 title: '',
  83.                 type:"sumbit"
  84.             }
  85.         } %}
  86.     </div>
  87.     <div class="FilterBarMobile-container">
  88.         <div class="FilterBarMobile-openContainer">
  89.             <div class="FilterBarMobile-open" @click="openSlide(0)">
  90.                 <p>${ bookingtitle }</p>
  91.                 {% include "component/svg.html.twig" with {
  92.                         props: {
  93.                             name: 'arrow-simple-right'
  94.                         }
  95.                     } %}
  96.             </div>
  97.         </div>
  98.         <div class="FilterBarMobile-slideContainer">
  99.             <div class="FilterBarMobileheader">
  100.                 <div class="FilterBarMobile-closeContainer" @click="closeSlide(0)">
  101.                     <span class="FilterMobile-closeContainer-cross"></span>
  102.                 </div>
  103.                 <p>${ bookingtitle }</p>
  104.             </div>
  105.             <div class="FilterBarMobile-slides">
  106.                 <div class="FilterBarMobile-slide">
  107.                     <div class="FilterBarMobile-items">
  108.                         <div class="FilterBarMobile-selected" :class="{research: research.searchResults}">
  109.                             <v-select disable :options="options" value='id' label="label" item-value="id" item-text="label" v-model="selected_option" class="FilterBar-select" :searchable="false" :clearable="false" @input="onChange"></v-select>
  110.                             <input type="hidden" :value="selected_option.id" name="type_bar"/>
  111.                         </div>
  112.                         <div class="FilterBarMobile-ItemContainer" v-for="setItem in set">
  113.                             <div class="FilterBarMobile-Item">
  114.                                 <div class="FilterBarMobile-CalendarItem" v-if="setItem.item === 'calendar'">
  115.                                     <div class="FilterBarMobile-SelectItem-details" @click="openSlide(1, setItem)">
  116.                                         <div data-component="svg" class="Svg-component" v-bind:class="setItem.icon">
  117.                                             <svg>
  118.                                                 <use v-bind="{ 'xlink:href':  '#' + setItem.icon }"/>
  119.                                             </svg>
  120.                                         </div>
  121.                                         <span class="FilterBarMobile-ItemTitle" v-if="setItem">${ setItem.text }</span>
  122.                                         <datepicker name="date_start" disabled class="FilterBar-datepicker" :monday-first="true" :disabled-dates="disabledDates" :format="customFormatter" :language="datePickerLang" ref="datepicker" v-model="datepicker_value"></datepicker>
  123.                                         <div class="BaseIcon-container">
  124.                                             {% include "component/svg.html.twig" with {
  125.                                                 props: {
  126.                                                     name: 'arrow-simple-right'
  127.                                                 }
  128.                                             } %}
  129.                                         </div>
  130.                                     </div>
  131.                                 </div>
  132.                                 <div class="FilterBarMobile-SelectItem" v-else>
  133.                                     <div class="FilterBarMobile-SelectItem-details" @click="openSlide(1, setItem)">
  134.                                         <div data-component="svg" class="Svg-component" v-bind:class="setItem.icon">
  135.                                             <svg>
  136.                                                 <use v-bind="{ 'xlink:href':  '#' + setItem.icon }"/>
  137.                                             </svg>
  138.                                         </div>
  139.                                         <span class="FilterBarMobile-ItemTitle" v-if="setItem">${ setItem.text }</span>
  140.                                         <v-select disable :options="setItem.values" value='id' label="text" item-value="id" item-text="text" v-model="setItem.value" class="FilterBar-select" :searchable="false" :clearable="false"></v-select>
  141.                                         <input type="hidden" :value="setItem.value.id" :name="setItem.item"/>
  142.                                         <div class="BaseIcon-container">
  143.                                             {% include "component/svg.html.twig" with {
  144.                                                 props: {
  145.                                                     name: 'arrow-simple-right'
  146.                                                 }
  147.                                             } %}
  148.                                         </div>
  149.                                     </div>
  150.                                 </div>
  151.                             </div>
  152.                         </div>
  153.                     </div>
  154.                 </div>
  155.                 <div class="FilterBarMobile-slide">
  156.                     <div class="FilterBarMobile-SelectItem">
  157.                         <div class="FilterBarMobile-SelectItemHeader" @click="closeSlide(1)">
  158.                             {% include "component/svg.html.twig" with {
  159.                                     props: {
  160.                                         name: 'arrow-simple-right'
  161.                                     }
  162.                                 } %}
  163.                             <div data-component="svg" class="Svg-component" v-if="selectedItem" v-bind:class="selectedItem.icon">
  164.                                 <svg>
  165.                                     <use v-bind="{ 'xlink:href':  '#' + selectedItem.icon }"/>
  166.                                 </svg>
  167.                             </div>
  168.                             <p class="FilterBarMobile-ItemTitle" v-if="selectedItem">${ selectedItem.text }</p>
  169.                         </div>
  170.                         <div v-if="selectedItem">
  171.                             <div class="FilterBarMobile-CalendarItem" v-if="selectedItem.item === 'calendar'">
  172.                                 <datepicker class="FilterBar-datepicker" :monday-first="true" :disabled-dates="disabledDates" :format="customFormatter" @selected="closeSlide(1)" :inline="true" :language="datePickerLang" ref="datepicker" v-model="datepicker_value"></datepicker>
  173.                             </div>
  174.                             <div class="FilterBarMobile-SelectItemOptionsContainer" v-else>
  175.                                 <div class="FilterBarMobile-SelectItemOptions" :class="{'selected': selectedItem.value == selectedItemOption }" v-for="selectedItemOption in selectedItem.values" @click="selectOption(selectedItemOption, 1)">
  176.                                     <p class="FilterBarMobile-SelectItemOption">${ selectedItemOption.text }</p>
  177.                                 </div>
  178.                                 <input type="hidden" :value="selectedItem.value.id" :name="selectedItem.item"/>
  179.                             </div>
  180.                         </div>
  181.                     </div>
  182.                 </div>
  183.             </div>
  184.             {# Submit button #}
  185.             {% include "component/button.html.twig" with {
  186.             class: 'BookingSearch-submitButton',
  187.             props: {
  188.                 text: "filtre_bar.search.libelle"|trans,
  189.                 title: '',
  190.                 type:"sumbit"
  191.             }
  192.         } %}
  193.         </div>
  194.     </div>
  195. </form>