{{ render(controller(
'App\\Controller\\Website\\LayoutController::documentHead', {
params: {
documentClasses: 'bg-light-gray',
extension: {
seo: {
title: seo.title,
description: seo.metaDescription
}
},
URI : app.request.uri,
urlImgSeo : app.request.getSchemeAndHttpHost()~urlImgSeo
}
}
)) }}
<iframe src='{{path("just_menu")}}' class='popup-menu z-4' data-menu-scrollable data-min-width='1024' allowtransparency="true"></iframe>
{% include 'search_properties/elements/cursor.html.twig' %}
<div class='fixed-layout-piece z-4 no-scrollbar-flicker flex-container align-right'>
<button class='bg-white hamburger' aria-label='Menu' data-menu-toggle>
<div class='hamburger__flex header-height-offers border-left border-bottom'
style='margin-bottom: -1px; box-sizing: content-box'>
<div class='hamburger__line'></div>
<div class='hamburger__line'></div>
<div class='hamburger__line'></div>
</div>
</button>
</div>
<div data-vue-app
{% if detail is defined %}data-detail="{{detail|json_encode}}"{% endif %}
:class="{'pointer-none o-04': allResultsAreLoading}"
data-reload-on-change
{% if rent %}data-rent{% endif %}
>
{% include 'search_properties/_header.html.twig' %}
{% include 'search_properties/_mobile-filters.html.twig' %}
<div class='pt-header-height-offers offer-list-animation'
:class="{'offer-list-animation--hidden': showDetail}"
>
<div class='no-scrollbar-flicker' data-above-sticky-footer>
{# placeholder for "modify search" #}
<div class='hide-for-xlarge py-16'>
<div class='py-16'>
<span class='t-button-medium'> </span>
</div>
</div>
{# list view #}
<main class='grid-x'>
<div class='small-12 large-auto cell bg-white' :class='{"show-for-large": showMap}'>
<div v-show='mapResults.length' style='display: none'>
<div class='offers-container'>
<h1 class='t-p-big-32 mb-16 pt-48 fw-500' v-text='seo.topTitle' id='topTitle'>{{seo.topTitle}}</h1>
<p class='t-label-regular'><span v-text='mapResults.length'></span> {{ 'Résultat(s)'|trans }}</p>
</div>
{% include 'search_properties/_toolbar.html.twig' %}
<div ref='cards' class='cards-list' :class='{"cards-list--2-col": !showMap, "pointer-none o-04": paginatedResultsAreLoading}'>
{{ render(controller('App\\Controller\\Website\\OfferController::searchCardsPaginated', {
request: request,
rent: rent,
})) }}
</div>
</div>
<div v-show='displayNoResults' style='display: none'>
<div class='offers-container'>
<h1 class='t-p-big-32 mb-16 pt-48 fw-500'>{{'Aucun résultat disponible'|trans|capitalize}}</h1>
<p class='t-label-regular mb-32'>{{"Elargissez vos critères de recherche pour afficher plus de résultats"|trans}}.</p>
{# <button @click.prevent='pickPopup("we-search-for-you")'
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> #}
</div>
</div>
</div>
<div class='small-12 large-5 xlarge-6 cell' v-if='showMap'>
<div class='p-sticky-offers'>
<map-with-popup
:markers='mapResults'
map-element-class='mh-100vh-offers mh-100vh-offers--modify-search custom-google-map'
markers-dir='{{asset('frontend/search/images/vector/')}}'
:use-circles='!rent'
:on-popup-click='onMapPopupClick'
:show-zoom='!detail'
:map-options="{minZoom: 3, maxZoom: 18, center: {lat: 46.5,lng: 6.5}}"
:swiss-coordinates="false"
:get-detail-url="getDetailUrl"
:display-price-per-sqm="filters.priceSqm"
:initial-bounds="boundsObject"
:disable-auto-fit="filters.bounds != null"
@boundschange='onBoundsChange'
:circles='mapCircles'
></map-with-popup>
<div v-if='showMap' class='top-right pointer-none px-24 pt-48 show-for-large'>
<transition name='fade-in'>
<button v-if="!detail" @click='showMap = false' aria-label='{{"cacher la carte"|trans|capitalize}}'
class='button-reset bg-white pointer-auto border px-24 py-24 br-4'>
<svg width='16' height='16'>
<use xlink:href='#close-16' />
</svg>
</button>
</transition>
</div>
</div>
</div>
</main>
</div>
</div>
{# map/list switch for mobile #}
<div class='fixed bottom z-2 hide-for-large px-16 mb-16 pointer-none'>
<div class='offer-list-animation flex-container align-right'
:class="{'offer-list-animation--hidden': showDetail}">
<button class='button-reset bg-dark-blue c-white icon-left icon-left--text-visible t-label-regular toggle-map-fixed-control pointer-auto'
@click='showMap = !showMap'>
<svg width='16' height='16'>
<use :xlink:href='fixedControlIcon' />
</svg>
<span v-text='showMap ? "{{'vue liste'|trans|title}}" : "{{'vue carte'|trans|capitalize}}"'></span>
</button>
</div>
</div>
{# detail #}
<div class='grid-container fluid pt-header-height-offers z-2 offer-detail-animation'
:class="{'offer-detail-animation--opened': showDetail}"
ref='detailScroller'>
<div class='grid-x grid-margin-x'>
<div class='large-offset-2 large-10 cell'>
<div class='offers-container-negative-left'>
<div class='offers-container bg-white mh-100vh-offers' ref="detail">
<div v-if="detail">
{% include 'search_properties/_detail.html.twig' with detail is defined ? detail : {} %}
</div>
<div v-else class='mh-100vh-offers flex-container align-center align-middle'>
<img src="{{ asset('frontend/search/dist/preloader.gif')}}" alt />
</div>
</div>
</div>
</div>
</div>
</div>
<div class='z-5 flex-container flex-dir-column modal-overlay offers-container py-32'
:class="{'modal-overlay--show': showOverlay}"
ref='popup' @click='closePopup'>
{% include 'search_properties/popups/_send-a-message.html.twig' %}
{% include 'search_properties/popups/_share.html.twig' %}
{% include 'search_properties/popups/_gallery.html.twig' %}
{% include 'search_properties/popups/_video.html.twig' %}
{% include 'search_properties/popups/_iframe.html.twig' %}
</div>
</div>
{{ render(controller(
'App\\Controller\\Website\\LayoutController::bodyEnd'
)) }}