templates/pages/search_properties.html.twig line 1

Open in your IDE?
  1. {{ render(controller(
  2.   'App\\Controller\\Website\\LayoutController::documentHead', {
  3.         params: {
  4.             documentClasses: 'bg-light-gray',
  5.             extension: {
  6.                 seo: {
  7.                     title: seo.title,
  8.                     description: seo.metaDescription
  9.                 }
  10.             },
  11.             URI : app.request.uri,
  12.             urlImgSeo : app.request.getSchemeAndHttpHost()~urlImgSeo
  13.         }
  14.     }
  15. )) }}
  16. <iframe src='{{path("just_menu")}}' class='popup-menu z-4' data-menu-scrollable data-min-width='1024' allowtransparency="true"></iframe>
  17. {% include 'search_properties/elements/cursor.html.twig' %}
  18. <div class='fixed-layout-piece z-4 no-scrollbar-flicker flex-container align-right'>
  19.   <button class='bg-white hamburger' aria-label='Menu' data-menu-toggle>
  20.     <div class='hamburger__flex header-height-offers border-left border-bottom'
  21.          style='margin-bottom: -1px; box-sizing: content-box'>
  22.       <div class='hamburger__line'></div>
  23.       <div class='hamburger__line'></div>
  24.       <div class='hamburger__line'></div>
  25.     </div>
  26.   </button>
  27. </div>
  28. <div data-vue-app
  29.   {% if detail is defined %}data-detail="{{detail|json_encode}}"{% endif %}
  30.   :class="{'pointer-none o-04': allResultsAreLoading}"
  31.   data-reload-on-change
  32.   {% if rent %}data-rent{% endif %}
  33. >
  34.   {% include 'search_properties/_header.html.twig' %}
  35.   {% include 'search_properties/_mobile-filters.html.twig' %}
  36.   <div class='pt-header-height-offers offer-list-animation'
  37.       :class="{'offer-list-animation--hidden': showDetail}"
  38.   >
  39.     <div class='no-scrollbar-flicker' data-above-sticky-footer>
  40.       {# placeholder for "modify search" #}
  41.       <div class='hide-for-xlarge py-16'>
  42.         <div class='py-16'>
  43.           <span class='t-button-medium'>&nbsp;</span>
  44.         </div>
  45.       </div>
  46.       {# list view #}
  47.       <main class='grid-x'>
  48.         <div class='small-12 large-auto cell bg-white' :class='{"show-for-large": showMap}'>
  49.           <div v-show='mapResults.length' style='display: none'>
  50.             <div class='offers-container'>
  51.               <h1 class='t-p-big-32 mb-16 pt-48 fw-500' v-text='seo.topTitle' id='topTitle'>{{seo.topTitle}}</h1>
  52.               <p class='t-label-regular'><span v-text='mapResults.length'></span> {{ 'Résultat(s)'|trans }}</p>
  53.             </div>
  54.             {% include 'search_properties/_toolbar.html.twig' %}
  55.             <div ref='cards' class='cards-list' :class='{"cards-list--2-col": !showMap, "pointer-none o-04": paginatedResultsAreLoading}'>
  56.               {{ render(controller('App\\Controller\\Website\\OfferController::searchCardsPaginated', {
  57.                 request: request,
  58.                 rent: rent,
  59.               })) }}
  60.             </div>
  61.           </div>
  62.           <div v-show='displayNoResults' style='display: none'>
  63.             <div class='offers-container'>
  64.               <h1 class='t-p-big-32 mb-16 pt-48 fw-500'>{{'Aucun résultat disponible'|trans|capitalize}}</h1>
  65.               <p class='t-label-regular mb-32'>{{"Elargissez vos critères de recherche pour afficher plus de résultats"|trans}}.</p>
  66.               {# <button @click.prevent='pickPopup("we-search-for-you")'
  67.                 class='button-reset py-16 bg-dark-blue c-white t-label-regular text-center px-24 mb-64'>{{'Décrire votre recherche'|trans|capitalize}}</button> #}
  68.             </div>
  69.           </div>
  70.         </div>
  71.         <div class='small-12 large-5 xlarge-6 cell' v-if='showMap'>
  72.           <div class='p-sticky-offers'>
  73.             <map-with-popup
  74.               :markers='mapResults'
  75.               map-element-class='mh-100vh-offers mh-100vh-offers--modify-search custom-google-map'
  76.               markers-dir='{{asset('frontend/search/images/vector/')}}'
  77.               :use-circles='!rent'
  78.               :on-popup-click='onMapPopupClick'
  79.               :show-zoom='!detail'
  80.                       :map-options="{minZoom: 3, maxZoom: 18, center: {lat: 46.5,lng: 6.5}}"
  81.               :swiss-coordinates="false"
  82.               :get-detail-url="getDetailUrl"
  83.               :display-price-per-sqm="filters.priceSqm"
  84.               :initial-bounds="boundsObject"
  85.               :disable-auto-fit="filters.bounds != null"
  86.               @boundschange='onBoundsChange'
  87.               :circles='mapCircles'
  88.             ></map-with-popup>
  89.             <div v-if='showMap' class='top-right pointer-none px-24 pt-48 show-for-large'>
  90.               <transition name='fade-in'>
  91.                 <button v-if="!detail" @click='showMap = false' aria-label='{{"cacher la carte"|trans|capitalize}}'
  92.                   class='button-reset bg-white pointer-auto border px-24 py-24 br-4'>
  93.                   <svg width='16' height='16'>
  94.                     <use xlink:href='#close-16' />
  95.                   </svg>
  96.                 </button>
  97.               </transition>
  98.             </div>
  99.           </div>
  100.         </div>
  101.       </main>
  102.     </div>
  103.   </div>
  104.   
  105.   {# map/list switch for mobile #}
  106.   <div class='fixed bottom z-2 hide-for-large px-16 mb-16 pointer-none'>
  107.     <div class='offer-list-animation flex-container align-right'
  108.       :class="{'offer-list-animation--hidden': showDetail}">
  109.       <button class='button-reset bg-dark-blue c-white icon-left icon-left--text-visible t-label-regular toggle-map-fixed-control pointer-auto'
  110.         @click='showMap = !showMap'>
  111.         <svg width='16' height='16'>
  112.           <use :xlink:href='fixedControlIcon' />
  113.         </svg>
  114.         <span v-text='showMap ? "{{'vue liste'|trans|title}}" : "{{'vue carte'|trans|capitalize}}"'></span>
  115.       </button>
  116.     </div>
  117.   </div>
  118.   {# detail #}
  119.   <div class='grid-container fluid pt-header-height-offers z-2 offer-detail-animation'
  120.        :class="{'offer-detail-animation--opened': showDetail}"
  121.        ref='detailScroller'>
  122.     <div class='grid-x grid-margin-x'>
  123.       <div class='large-offset-2 large-10 cell'>
  124.         <div class='offers-container-negative-left'>
  125.           <div class='offers-container bg-white mh-100vh-offers' ref="detail">
  126.             <div v-if="detail">
  127.               {% include 'search_properties/_detail.html.twig' with detail is defined ? detail : {} %}
  128.             </div>
  129.             <div v-else class='mh-100vh-offers flex-container align-center align-middle'>
  130.               <img src="{{ asset('frontend/search/dist/preloader.gif')}}" alt />
  131.             </div>
  132.           </div>
  133.         </div>
  134.       </div>
  135.     </div>
  136.   </div>
  137.   <div class='z-5 flex-container flex-dir-column modal-overlay offers-container py-32'
  138.     :class="{'modal-overlay--show': showOverlay}"
  139.     ref='popup' @click='closePopup'>
  140.     {% include 'search_properties/popups/_send-a-message.html.twig' %}
  141.     {% include 'search_properties/popups/_share.html.twig' %}
  142.     {% include 'search_properties/popups/_gallery.html.twig' %}
  143.     {% include 'search_properties/popups/_video.html.twig' %}
  144.     {% include 'search_properties/popups/_iframe.html.twig' %}
  145.   </div>
  146. </div>
  147. {{ render(controller(
  148.   'App\\Controller\\Website\\LayoutController::bodyEnd'
  149. )) }}