101-review-lsi-360-fe-8ck8z8.studio-net.fr
Open in
urlscan Pro
51.75.241.127
Public Scan
URL:
https://101-review-lsi-360-fe-8ck8z8.studio-net.fr/
Submission: On March 07 via api from US — Scanned from US
Submission: On March 07 via api from US — Scanned from US
Form analysis
1 forms found in the DOMGET /recherche
<form id="form" action="/recherche"
x-data="{ alertLocation : false, showExtended : false,hasChanged : false, email : '', types : ['maison','appartement'] , maxprice:[] ,opened: false, isModalOpen: false, checked: 'acheter', extendValue: '-1', value: '', locations: [], minrooms: [], show: false, suggestions: [], histories: [] }"
x-init="$watch('locations', locations => value = locations.join(','))" method="GET" class="sm:pr-10 sm:pt-10 sm:pl-10 sm:pb-6 sm:mb-0 p-4 sm:w-full ">
<label>
<input type="text" name="filter[type]" value="maison,appartement" class="hidden">
</label>
<div class="flex mb-6 sm:mb-8 container-fields">
<label class="w-full inline-flex items-center" for="filter-transaction-acheter" x-on:click="$el.setAttribute('action', '/recherche'); locations = [];">
<input aria-labelledby="label-acheter" class="sr-only" type="radio" name="filter[transaction]" id="filter-transaction-acheter" value="acheter" x-model="checked">
<span id="label-acheter" :class="[ checked === 'acheter' ? 'bg-red-600 text-white' : 'bg-gray-100 text-gray-800' ]"
class="w-full flex justify-center p-3 text-center capitalize border-r border-gray-200 rounded-bl-lg rounded-tl-lg cursor-pointer sm:text-lg bg-red-600 text-white">Acheter</span>
</label>
<label class="w-full inline-flex items-center" for="filter-transaction-louer" x-on:click="$el.setAttribute('action', '/recherche'); locations = [];">
<input aria-labelledby="label-louer" class="sr-only" type="radio" name="filter[transaction]" id="filter-transaction-louer" value="louer" x-model="checked">
<span id="label-louer" :class="[ checked === 'louer' ? 'bg-red-600 text-white' : 'bg-gray-100 text-gray-800 border-l' ]"
class="w-full flex justify-center border-r border-gray-200 p-3 text-center capitalize cursor-pointer sm:text-lg bg-gray-100 text-gray-800 border-l">Louer</span>
</label>
<label class="w-full inline-flex items-center" for="filter-transaction-estimer" x-on:click="$el.setAttribute('action', '/estimation-immobiliere'); locations = [];">
<input aria-labelledby="label-estimer" class="sr-only" type="radio" name="filter[transaction]" id="filter-transaction-estimer" value="estimer" x-model="checked">
<span id="label-estimer" :class="[ checked === 'estimer' ? 'bg-red-600 text-white' : 'bg-gray-100 text-gray-800' ]"
class="w-full flex justify-center p-3 text-center capitalize rounded-br-lg rounded-tr-lg cursor-pointer sm:text-lg bg-gray-100 text-gray-800">Estimer</span>
</label>
</div>
<div x-on:click.away="show = false" class="container-fields items-center justify-center w-full">
<input type="text" class="hidden" name="filter[location]" x-model="locations">
<template x-if="checked !== 'estimer'">
<div>
<div class="w-full flex flex-col justify-center">
<div class="mb-6 sm:mb-8 ">
<div :class="{'border-red-600': suggestions.length > 0 && locations.length === 0}" class="w-full flex-column relative flex-1 text-gray-800" ref="search">
<div class="items-center" :class="[showExtended && locations.length > 0 && extendValue < 0 ? 'rounded-tl-lg rounded-tr-lg bg-gray-100 border-t border-r border-l border-gray-300' : '']">
<div class="container" x-on:click="showExtended = !showExtended" x-on:click.away="show = false">
<template x-for="(location, i) in locations" :key="i">
<div class=" flex justify-between bg-gray-100 rounded-lg relative p-3" x-on:click="showExtended = !showExtended">
<button type="button" class="flex items-center mt-1 bg-gray-100 rounded-lg cursor-pointer" x-on:click="extendValue = -1 ; locations = [...locations.slice(0, i), ...locations.slice(i + 1)]">
<span class="text-gray-700 sm:text-lg" x-text="location + (extendValue >= 0 ? ' | ' + extendValue/1000 + ' km' : '')"></span>
<svg class="w-4 h-4 ml-2 text-gray-700" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg> </button>
<i class="fas fa-map-marker-alt self-center pr-3 absolute right-1" style="color: #252F3F"></i>
</div>
</template>
<div class="flex justify-between rounded-tl-lg rounded-tr-lg bg-gray-100 relative" x-on:click="showExtended = true" x-show="locations.length == 0"
:class="[locations.length == 0 ? 'rounded-br-lg rounded-bl-lg ' : 'border-t border-r border-l border-gray-300 border-b-0 !important']">
<input type="text" class="town bg-gray-100 flex-1 sm:text-lg w-full p-2 lg:p-3 placeholder-gray-700 rounded-lg" x-bind:placeholder="'Dans quelle ville recherchez-vous ?'" x-ref="input" x-on:focus="show = true"
x-on:change="hasChanged = true" x-on:keydown.enter.prevent="locations = suggestions.length > 0 ? locations.concat([suggestions[0].name]) : locations.concat([$event.target.value]); $event.target.value = '';"
x-on:input.debounce="axios.get('/api/localizations/autocomplete', { params: { token: $event.target.value } }).then(function (response) { suggestions = response.data.slice(0, 10); })">
<i class="fas fa-map-marker-alt self-center pr-2 absolute right-1" style="color: #252F3F"></i>
</div>
</div>
</div>
<div x-cloak="" x-show="show && suggestions.length > 0" class="suggestions-container absolute inset-x-0 z-20 w-full p-4 bg-white rounded-b-lg">
<template x-for="suggestion in suggestions" :key="suggestion.id">
<button type="button" class="flex justify-between w-full py-1 cursor-pointer" x-on:click="locations = locations.concat([suggestion.name]); suggestions = []; showExtended = true; $refs.input.value = ''; $refs.input.focus();">
<div class="font-semibold" x-text="suggestion.label"></div>
<div class="text-gray-500" x-text="suggestion.type"></div>
</button>
</template>
</div>
<div x-cloak="" class="suggestions-history" x-show="show && histories.length >= 1 && suggestions.length === 0 && locations.length === 0">
<div class="bg-cool-gray-100 py-2 px-4 text-sm font-semibold"> Recherches récentes </div>
<div class="p-4">
<template x-for="history in histories" :key="history.id">
<button type="button" class="flex justify-between w-full cursor-pointer py-1" x-on:click="locations = locations.concat([history.name]); showExtended = true;histories = []; $refs.input.value = ''; $refs.input.focus();">
<div class="font-semibold" x-text="history.label"></div>
<div class="text-gray-500" x-text="history.type"></div>
</button>
</template>
</div>
</div>
</div>
<div class=" block mt-0 rounded-bl-lg border-t-0 rounded-br-lg bg-gray-100 border-b border-r border-l border-gray-300 w-full" x-show="showExtended && locations.length > 0 && extendValue < 0"
style="top: 43px; z-index: 1;">
<div class="text-center bg-gray-100">
<hr style="margin-left:15%; width: 70%; border-top: 1px solid rgb(220,220,220);">
</div>
<label>
<select class="w-full p-2 sm:p-3 form-select bg-gray-100 text-gray-700 border-none sm:text-lg" wire:model="filter.extend" name="filter[extend]" x-model="extendValue">
<option value=""> Étendre la recherche ? </option>
<option value="5000"> 5 kilomètres </option>
<option value="15000"> 15 kilomètres </option>
<option value="20000"> 20 kilomètres </option>
<option value="0"> Ne pas étendre ma recherche </option>
</select>
</label>
</div>
</div>
<div class="container-fields mb-6 sm:mb-8">
<div class="panels flex justify-between flex-col sm:flex-row">
<div class="w-full sm:w-5/12">
<div class="h-full"
x-data="{ hasChanged: false, mask: null, initMask: function(el) { this.mask = IMask(el, { mask: Number, min: 1, max: 100000000, thousandsSeparator: ' ' }); if(el.dataset.initialValue) { this.mask.value = el.dataset.initialValue; } },resetMask: function(el) {this.mask.value = ''; } }"
x-init="initMask($refs.inputElement)">
<label class="w-full h-full flex justify-between bg-gray-100 rounded-lg relative">
<input x-ref="inputElement" x-on:change="hasChanged = true" wire:model.lazy="filter.maxprice" name="filter[maxprice]" @reset-input.window="resetMask($refs.inputElement)"
class="sm:text-lg placeholder-gray-700 bg-gray-100 text-gray-700 border-none block w-full p-2 lg:p-3 form-input sm:text-lg sm:leading-5" placeholder="Budget maximum" data-initial-value="">
<i class="fas fa-euro-sign self-center mr-3 absolute right-1" style="color: #252F3F"></i>
</label>
</div>
</div>
<div class="right-panel relative w-full sm:w-5/12 mt-6 sm:mt-0" x-on:click.away="opened = false" x-on:click="opened = !opened" x-bind:class="{ 'active': opened }">
<div class="relative flex bg-gray-100 text-gray-700 justify-between p-2 lg:p-3 text-md rounded-lg" :class="{'border-solid border-t border-r border-l border-gray-300' : opened == true}">
<span id="piece-minimum-title" class="sm:text-lg">Nb de pièce minimum</span>
<i x-show="!opened" class="fas fa-chevron-down self-center absolute right-3" style="color: #252F3F"></i>
<i x-show="opened" class="fas fa-chevron-up absolute right-3" style="color: #252F3F"></i>
</div>
<input type="hidden" id="hiddenRooms" name="filter[rooms]" wire:model="filter.rooms">
<div class="rooms hidden-content rounded-b-lg p-2 lg:p-3 flex bg-gray-100" x-show="opened">
<!-- Button 1 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('1')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="1" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">1</span>
</label>
</div>
<!-- Button 2 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('2')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="2" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">2</span>
</label>
</div>
<!-- Button 3 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('3')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="3" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">3</span>
</label>
</div>
<!-- Button 4 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('4')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="4" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">4</span>
</label>
</div>
<!-- Button 5+ -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('5')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="5" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">5+</span>
</label>
</div>
</div>
</div>
</div>
</div>
<div id="container-types" class="container-fields flex flex-col sm:justify-between sm:w-full mb-6 sm:mb-8">
<div class="flex justify-between sm:justify-between sm:w-full">
<div class="dk-button">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('appartement')" type="checkbox" x-model="types" class="hidden" value="maison" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Maison <i class="fas fa-plus ml-3" x-show="!types.includes('maison')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('maison')"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('appartement')" type="checkbox" x-model="types" class="hidden" value="appartement" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Appartement <i class="fas fa-plus ml-3" x-show="!types.includes('appartement')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('appartement')"></i>
</span>
</label>
</div>
<div class="hidden sm:block dk-button" x-show="checked == 'acheter'">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('terrain')" type="checkbox" x-model="types" class="hidden" value="terrain" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Terrain <i class="fas fa-plus ml-3" x-show="!types.includes('terrain')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('terrain')"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="hidden sm:block rounded-lg flex bg-slate-400">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('parking')" type="checkbox" x-model="types" class="hidden" value="parking" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px;">Parking <i class="fas fa-plus ml-3" x-show="!types.includes('parking')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('parking')"></i>
</span>
</label>
</div>
<button type="button" onclick="toggleAdditionalTypes()" id="showButton" class="sm:hidden">
<i class="fas fa-plus rounded-full h-6 w-6 flex justify-center items-center" style="background-color: #252F3F; display: flex;justify-content: center;align-items: center;">
</i>
<span class="hidden">Afficher plus</span>
</button>
</div>
<div id="additionalTypes" style="display: none" class="mt-3 sm:mt-0 hidden">
<div class="dk-button mr-8 sm:mr-0" x-show="checked == 'acheter'">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('terrain')" type="checkbox" x-model="types" class="hidden" value="terrain" wire:model="filter.type" name="filter[type][]">
<span class="ttypes cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3">Terrain <i class="fas fa-plus ml-3" x-show="!types.includes('terrain')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('terrain')"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="rounded-lg flex bg-slate-400">
<input x-bind:checked="types.includes('parking')" type="checkbox" x-model="types" class="hidden" value="parking" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3">Parking <i class="fas fa-plus ml-3" x-show="!types.includes('parking')"></i>
<i class="fas fa-check ml-3" x-show="types.includes('parking')"></i>
</span>
</label>
</div>
</div>
</div>
<button x-show="locations.length > 0" type="button" class="lg:w-auto sm:mt-4 2xl:mt-10 flex items-center px-3 py-3 font-semibold text-red-100 bg-red-600 border-b-2 border-red-600 self-center border-1 rounded-lg space-x-2 justify-center"
x-on:click="isModalOpen = true;">
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg> <span class="text-white sm:text-lg">Voir les annonces</span>
</button>
<button x-show="locations.length === 0" class="lg:w-auto sm:mt-4 2xl:mt-10 flex items-center px-3 py-3 font-semibold text-red-100 bg-red-600 border-b-2 border-red-600 self-center border-1 rounded-lg space-x-2 justify-center" type="button"
x-on:click="alertLocation = true;">
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg> <span class="text-white sm:text-lg">Voir les annonces</span>
</button>
<div class="modal" role="dialog" tabindex="-1" x-show="isModalOpen" x-cloak="" x-transition="">
<div class="modal-content">
<button type="submit" aria-label="Close" class="close" x-on:click="isModalOpen=false; $gaEvent('HP_V4', 'Clic', 'Bouton_Recherche_HP')"><i class="fas fa-times w-4 h-4 text-gray-600"></i></button>
<div x-data="{isValidEmail : false , email:''}">
<div class="text-center text-red-500 text-2xl font-semibold">Activez votre alerte</div>
<div class="mt-4 text-gray-700 font-normal"> Recevez par mail et en temps réel les nouvelles annonces qui correspondent à votre recherche : <div class="mt-4">
<label>
<input type="email" name="email" x-model="email" wire:model="email" x-on:input="isValidEmail = /(?![0-9]+@)[a-zA-Z0-9.-]+@[a-zA-Z0-9-_]+\.[a-zA-Z]+/.test(email)" :class=" isValidEmail ? 'border-blue-500': 'border-red-500' "
class="w-full mt-2 text-gray-800 form-input" placeholder="jacques.dupond@tld.com">
</label>
</div>
<div class="mt-4 text-sm text-gray-600"> En cliquant sur le bouton ci-dessous, je reconnais avoir pris connaissance et accepter sans réserves les
<a href="/cgu-politique-de-confidentialite-cookies" class="underline" target="_blank">Conditions Générales d’Utilisation</a> du site. </div>
</div>
<div class="flex items-center justify-center mt-4 -mx-2">
<div class="px-2 mt-2">
<button type="submit" class="text-sm px-3 py-2 font-semibold text-white rounded-lg" :class="!isValidEmail ? 'cursor-not-allowed disabled bg-gray-300' : ' bg-red-500'"> Créer une alerte pour cette recherche </button>
</div>
</div>
</div>
</div>
</div>
<div class="modal-without-bg" role="dialog" tabindex="-1" x-show="alertLocation" x-cloak="" x-transition="">
<div class="modal-location rounded-lg p-8 alert-content border-lg bg-slate-400" x-on:click.away="alertLocation = false">
<div class="flex justify-between">
<i class="fas fa-exclamation-circle text-2xl rounded-full mr-2"></i>
<span class="text-lg"> Merci d'indiquer la ville dans laquelle vous cherchez un bien </span>
<span class="self-center" aria-label="Close" style="top: unset" x-on:click="alertLocation=false;">
<i class="relative float-right cursor-pointer fas fa-times w-4 h-4 text-gray-600"></i>
</span>
</div>
</div>
</div>
<style>
.modal-location {
margin: auto;
padding: 15px;
background-color: #f4f4f4;
color: #717477;
width: 80%;
max-width: 600px;
position: relative;
border-radius: 5px;
}
</style>
<div class="mt-4 2xl:mt-10 text-center">
<div>
<a href="/recherche-avancee" x-on:click="$gaEvent('HP_V4', 'Clic', 'Recherche_Avancee_HP');" class="text-gray-600 sm:text-lg underline">
+ de critères
</a>
</div>
</div>
</div>
</div>
</template>
<div>
<div class="w-full flex flex-col justify-center">
<div class="mb-6 sm:mb-8 ">
<div :class="{'border-red-600': suggestions.length > 0 && locations.length === 0}" class="w-full flex-column relative flex-1 text-gray-800" ref="search">
<div class="items-center " :class="[showExtended && locations.length > 0 && extendValue < 0 ? 'rounded-tl-lg rounded-tr-lg bg-gray-100 border-t border-r border-l border-gray-300' : '']">
<div class="container" x-on:click="showExtended = !showExtended" x-on:click.away="show = false">
<template x-for="(location, i) in locations" :key="i">
<div class=" flex justify-between bg-gray-100 rounded-lg relative p-3" x-on:click="showExtended = !showExtended">
<button type="button" class="flex items-center mt-1 bg-gray-100 rounded-lg cursor-pointer" x-on:click="extendValue = -1 ; locations = [...locations.slice(0, i), ...locations.slice(i + 1)]">
<span class="text-gray-700 sm:text-lg" x-text="location + (extendValue >= 0 ? ' | ' + extendValue/1000 + ' km' : '')"></span>
<svg class="w-4 h-4 ml-2 text-gray-700" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg> </button>
<i class="fas fa-map-marker-alt self-center pr-3 absolute right-1" style="color: #252F3F"></i>
</div>
</template>
<div class="flex justify-between rounded-tl-lg rounded-tr-lg bg-gray-100 relative rounded-br-lg rounded-bl-lg " x-on:click="showExtended = true" x-show="locations.length == 0"
:class="[locations.length == 0 ? 'rounded-br-lg rounded-bl-lg ' : 'border-t border-r border-l border-gray-300 border-b-0 !important']">
<input type="text" class="town bg-gray-100 flex-1 sm:text-lg w-full p-2 lg:p-3 placeholder-gray-700 rounded-lg" x-bind:placeholder="'Dans quelle ville recherchez-vous ?'" x-ref="input" x-on:focus="show = true"
x-on:change="hasChanged = true" x-on:keydown.enter.prevent="locations = suggestions.length > 0 ? locations.concat([suggestions[0].name]) : locations.concat([$event.target.value]); $event.target.value = '';"
x-on:input.debounce="axios.get('/api/localizations/autocomplete', { params: { token: $event.target.value } }).then(function (response) { suggestions = response.data.slice(0, 10); })"
placeholder="Dans quelle ville recherchez-vous ?">
<i class="fas fa-map-marker-alt self-center pr-2 absolute right-1" style="color: #252F3F" aria-hidden="true"></i>
</div>
</div>
</div>
<div x-show="show && suggestions.length > 0" class="suggestions-container absolute inset-x-0 z-20 w-full p-4 bg-white rounded-b-lg" style="display: none;">
<template x-for="suggestion in suggestions" :key="suggestion.id">
<button type="button" class="flex justify-between w-full py-1 cursor-pointer" x-on:click="locations = locations.concat([suggestion.name]); suggestions = []; showExtended = true; $refs.input.value = ''; $refs.input.focus();">
<div class="font-semibold" x-text="suggestion.label"></div>
<div class="text-gray-500" x-text="suggestion.type"></div>
</button>
</template>
</div>
<div class="suggestions-history" x-show="show && histories.length >= 1 && suggestions.length === 0 && locations.length === 0" style="display: none;">
<div class="bg-cool-gray-100 py-2 px-4 text-sm font-semibold"> Recherches récentes </div>
<div class="p-4">
<template x-for="history in histories" :key="history.id">
<button type="button" class="flex justify-between w-full cursor-pointer py-1" x-on:click="locations = locations.concat([history.name]); showExtended = true;histories = []; $refs.input.value = ''; $refs.input.focus();">
<div class="font-semibold" x-text="history.label"></div>
<div class="text-gray-500" x-text="history.type"></div>
</button>
</template>
</div>
</div>
</div>
<div class=" block mt-0 rounded-bl-lg border-t-0 rounded-br-lg bg-gray-100 border-b border-r border-l border-gray-300 w-full" x-show="showExtended && locations.length > 0 && extendValue < 0"
style="top: 43px; z-index: 1; display: none;">
<div class="text-center bg-gray-100">
<hr style="margin-left:15%; width: 70%; border-top: 1px solid rgb(220,220,220);">
</div>
<label>
<select class="w-full p-2 sm:p-3 form-select bg-gray-100 text-gray-700 border-none sm:text-lg" wire:model="filter.extend" name="filter[extend]" x-model="extendValue">
<option value=""> Étendre la recherche ? </option>
<option value="5000"> 5 kilomètres </option>
<option value="15000"> 15 kilomètres </option>
<option value="20000"> 20 kilomètres </option>
<option value="0"> Ne pas étendre ma recherche </option>
</select>
</label>
</div>
</div>
<div class="container-fields mb-6 sm:mb-8">
<div class="panels flex justify-between flex-col sm:flex-row">
<div class="w-full sm:w-5/12">
<div class="h-full"
x-data="{ hasChanged: false, mask: null, initMask: function(el) { this.mask = IMask(el, { mask: Number, min: 1, max: 100000000, thousandsSeparator: ' ' }); if(el.dataset.initialValue) { this.mask.value = el.dataset.initialValue; } },resetMask: function(el) {this.mask.value = ''; } }"
x-init="initMask($refs.inputElement)">
<label class="w-full h-full flex justify-between bg-gray-100 rounded-lg relative">
<input x-ref="inputElement" x-on:change="hasChanged = true" wire:model.lazy="filter.maxprice" name="filter[maxprice]" @reset-input.window="resetMask($refs.inputElement)"
class="sm:text-lg placeholder-gray-700 bg-gray-100 text-gray-700 border-none block w-full p-2 lg:p-3 form-input sm:text-lg sm:leading-5" placeholder="Budget maximum" data-initial-value="">
<i class="fas fa-euro-sign self-center mr-3 absolute right-1" style="color: #252F3F" aria-hidden="true"></i>
</label>
</div>
</div>
<div class="right-panel relative w-full sm:w-5/12 mt-6 sm:mt-0" x-on:click.away="opened = false" x-on:click="opened = !opened" x-bind:class="{ 'active': opened }">
<div class="relative flex bg-gray-100 text-gray-700 justify-between p-2 lg:p-3 text-md rounded-lg" :class="{'border-solid border-t border-r border-l border-gray-300' : opened == true}">
<span id="piece-minimum-title" class="sm:text-lg">Nb de pièce minimum</span>
<i x-show="!opened" class="fas fa-chevron-down self-center absolute right-3" style="color: #252F3F" aria-hidden="true"></i>
<i x-show="opened" class="fas fa-chevron-up absolute right-3" style="color: rgb(37, 47, 63); display: none;" aria-hidden="true"></i>
</div>
<input type="hidden" id="hiddenRooms" name="filter[rooms]" wire:model="filter.rooms" value="">
<div class="rooms hidden-content rounded-b-lg p-2 lg:p-3 flex bg-gray-100" x-show="opened" style="display: none;">
<!-- Button 1 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('1')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="1" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">1</span>
</label>
</div>
<!-- Button 2 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('2')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="2" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">2</span>
</label>
</div>
<!-- Button 3 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('3')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="3" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">3</span>
</label>
</div>
<!-- Button 4 -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('4')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="4" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">4</span>
</label>
</div>
<!-- Button 5+ -->
<div class="ck-button">
<label class="w-8 h-8 rounded-lg block">
<input :checked="minrooms.includes('5')" x-on:change="opened = false; hasChanged = true; updateHiddenInput()" type="checkbox" class="hidden" value="5" onchange="updateTitle(this)" name="filter[minrooms][]"
wire:model="filter.minrooms">
<span class="rounded-lg">5+</span>
</label>
</div>
</div>
</div>
</div>
</div>
<div id="container-types" class="container-fields flex flex-col sm:justify-between sm:w-full mb-6 sm:mb-8">
<div class="flex justify-between sm:justify-between sm:w-full">
<div class="dk-button">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('appartement')" type="checkbox" x-model="types" class="hidden" value="maison" wire:model="filter.type" name="filter[type][]" checked="checked">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Maison <i class="fas fa-plus ml-3" x-show="!types.includes('maison')" aria-hidden="true" style="display: none;"></i>
<i class="fas fa-check ml-3" x-show="types.includes('maison')" aria-hidden="true"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('appartement')" type="checkbox" x-model="types" class="hidden" value="appartement" wire:model="filter.type" name="filter[type][]" checked="checked">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Appartement
<i class="fas fa-plus ml-3" x-show="!types.includes('appartement')" aria-hidden="true" style="display: none;"></i>
<i class="fas fa-check ml-3" x-show="types.includes('appartement')" aria-hidden="true"></i>
</span>
</label>
</div>
<div class="hidden sm:block dk-button" x-show="checked == 'acheter'">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('terrain')" type="checkbox" x-model="types" class="hidden" value="terrain" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px">Terrain <i class="fas fa-plus ml-3" x-show="!types.includes('terrain')" aria-hidden="true"></i>
<i class="fas fa-check ml-3" x-show="types.includes('terrain')" aria-hidden="true" style="display: none;"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="hidden sm:block rounded-lg flex bg-slate-400">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('parking')" type="checkbox" x-model="types" class="hidden" value="parking" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3" style="min-width: 100px;">Parking <i class="fas fa-plus ml-3" x-show="!types.includes('parking')" aria-hidden="true"></i>
<i class="fas fa-check ml-3" x-show="types.includes('parking')" aria-hidden="true" style="display: none;"></i>
</span>
</label>
</div>
<button type="button" onclick="toggleAdditionalTypes()" id="showButton" class="sm:hidden">
<i class="fas fa-plus rounded-full h-6 w-6 flex justify-center items-center" style="background-color: #252F3F; display: flex;justify-content: center;align-items: center;" aria-hidden="true">
</i>
<span class="hidden">Afficher plus</span>
</button>
</div>
<div id="additionalTypes" style="display: none" class="mt-3 sm:mt-0 hidden">
<div class="dk-button mr-8 sm:mr-0" x-show="checked == 'acheter'">
<label class="rounded-lg bg-slate-400 flex">
<input x-on:change="hasChanged = true" x-bind:checked="types.includes('terrain')" type="checkbox" x-model="types" class="hidden" value="terrain" wire:model="filter.type" name="filter[type][]">
<span class="ttypes cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3">Terrain <i class="fas fa-plus ml-3" x-show="!types.includes('terrain')" aria-hidden="true"></i>
<i class="fas fa-check ml-3" x-show="types.includes('terrain')" aria-hidden="true" style="display: none;"></i>
</span>
</label>
</div>
<div class="dk-button">
<label class="rounded-lg flex bg-slate-400">
<input x-bind:checked="types.includes('parking')" type="checkbox" x-model="types" class="hidden" value="parking" wire:model="filter.type" name="filter[type][]">
<span class="types cursor-pointer rounded-lg bg-gray-100 flex sm:text-lg px-6 py-3">Parking <i class="fas fa-plus ml-3" x-show="!types.includes('parking')" aria-hidden="true"></i>
<i class="fas fa-check ml-3" x-show="types.includes('parking')" aria-hidden="true" style="display: none;"></i>
</span>
</label>
</div>
</div>
</div>
<button x-show="locations.length > 0" type="button" class="lg:w-auto sm:mt-4 2xl:mt-10 flex items-center px-3 py-3 font-semibold text-red-100 bg-red-600 border-b-2 border-red-600 self-center border-1 rounded-lg space-x-2 justify-center"
x-on:click="isModalOpen = true;" style="display: none;">
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg> <span class="text-white sm:text-lg">Voir les annonces</span>
</button>
<button x-show="locations.length === 0" class="lg:w-auto sm:mt-4 2xl:mt-10 flex items-center px-3 py-3 font-semibold text-red-100 bg-red-600 border-b-2 border-red-600 self-center border-1 rounded-lg space-x-2 justify-center" type="button"
x-on:click="alertLocation = true;">
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg> <span class="text-white sm:text-lg">Voir les annonces</span>
</button>
<div class="modal" role="dialog" tabindex="-1" x-show="isModalOpen" x-transition="" style="display: none;">
<div class="modal-content">
<button type="submit" aria-label="Close" class="close" x-on:click="isModalOpen=false; $gaEvent('HP_V4', 'Clic', 'Bouton_Recherche_HP')"><i class="fas fa-times w-4 h-4 text-gray-600" aria-hidden="true"></i></button>
<div x-data="{isValidEmail : false , email:''}">
<div class="text-center text-red-500 text-2xl font-semibold">Activez votre alerte</div>
<div class="mt-4 text-gray-700 font-normal"> Recevez par mail et en temps réel les nouvelles annonces qui correspondent à votre recherche : <div class="mt-4">
<label>
<input type="email" name="email" x-model="email" wire:model="email" x-on:input="isValidEmail = /(?![0-9]+@)[a-zA-Z0-9.-]+@[a-zA-Z0-9-_]+\.[a-zA-Z]+/.test(email)" :class=" isValidEmail ? 'border-blue-500': 'border-red-500' "
class="w-full mt-2 text-gray-800 form-input border-red-500" placeholder="jacques.dupond@tld.com">
</label>
</div>
<div class="mt-4 text-sm text-gray-600"> En cliquant sur le bouton ci-dessous, je reconnais avoir pris connaissance et accepter sans réserves les
<a href="/cgu-politique-de-confidentialite-cookies" class="underline" target="_blank">Conditions Générales d’Utilisation</a> du site. </div>
</div>
<div class="flex items-center justify-center mt-4 -mx-2">
<div class="px-2 mt-2">
<button type="submit" class="text-sm px-3 py-2 font-semibold text-white rounded-lg cursor-not-allowed disabled bg-gray-300" :class="!isValidEmail ? 'cursor-not-allowed disabled bg-gray-300' : ' bg-red-500'"> Créer une alerte pour
cette recherche </button>
</div>
</div>
</div>
</div>
</div>
<div class="modal-without-bg" role="dialog" tabindex="-1" x-show="alertLocation" x-transition="" style="display: none;">
<div class="modal-location rounded-lg p-8 alert-content border-lg bg-slate-400" x-on:click.away="alertLocation = false">
<div class="flex justify-between">
<i class="fas fa-exclamation-circle text-2xl rounded-full mr-2" aria-hidden="true"></i>
<span class="text-lg"> Merci d'indiquer la ville dans laquelle vous cherchez un bien </span>
<span class="self-center" aria-label="Close" style="top: unset" x-on:click="alertLocation=false;">
<i class="relative float-right cursor-pointer fas fa-times w-4 h-4 text-gray-600" aria-hidden="true"></i>
</span>
</div>
</div>
</div>
<style>
.modal-location {
margin: auto;
padding: 15px;
background-color: #f4f4f4;
color: #717477;
width: 80%;
max-width: 600px;
position: relative;
border-radius: 5px;
}
</style>
<div class="mt-4 2xl:mt-10 text-center">
<div>
<a href="/recherche-avancee" x-on:click="$gaEvent('HP_V4', 'Clic', 'Recherche_Avancee_HP');" class="text-gray-600 sm:text-lg underline">
+ de critères
</a>
</div>
</div>
</div>
</div>
<template x-if="checked == 'estimer'">
<div>
<div :class="{'sm:rounded-bl-none': show && suggestions.length, 'border-red-600': suggestions.length > 0 && locations.length === 0}"
class="flex flex-col relative flex-1 text-gray-800 bg-white border-gray-300 sm:rounded-tl-lg sm:rounded-l-lg sm:rounded-r-none">
<span class="sm:text-lg mb-6">Obtenez une estimation fiable de votre maison ou appartement,<br> gratuitement et en quelques clics !</span>
<div class="flex items-center relative">
<div class="flex-1">
<div class="container">
<template x-for="(location, i) in locations" :key="i">
<div class=" flex justify-between bg-gray-100 rounded-lg relative">
<button type="button" class="flex items-center px-2 py-1 mt-1 bg-gray-100 rounded-lg cursor-pointer" x-on:click="locations = [...locations.slice(0, i), ...locations.slice(i + 1)]">
<span class="p-3" x-text="location"></span>
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg> </button>
</div>
</template>
<div class="flex-1 flex-shrink-0 min-w-xs">
<input x-show="locations.length < 1" type="text" class=" town bg-gray-100 flex-1 sm:text-lg w-full p-2 lg:p-3 placeholder-gray-700 rounded-lg" placeholder="Quel est l'adresse du bien à estimer ?" x-ref="input"
x-on:focus="show = true" x-on:click="showExtended = true" x-on:input.debounce="axios.get('/api/autocomplete/address', { params: { input: $event.target.value } }).then(function (response) { suggestions = response.data })">
</div>
</div>
</div>
<div x-cloak="" x-show="show && suggestions.length > 0" class="suggestions-container absolute inset-x-0 z-20 w-full p-4 bg-white rounded-b-lg">
<template x-for="suggestion in suggestions" :key="suggestion.place_id">
<button type="button" class="flex justify-between w-full py-1 cursor-pointer" x-on:click="
axios
.get('/api/address/' + suggestion.place_id)
.then(function ({ data }) {
let result = [];
let location_result = [];
const location_fields = {
'locality': 'short_name',
'postal_code': 'short_name'
};
const fields = {
'street_number': 'short_name',
'route': 'short_name'
};
for (const component of data.address_components) {
const addressType = component.types[0];
if (location_fields[addressType]) {
let value = component[location_fields[addressType]];
if (addressType == 'postal_code') {
value = `(${value})`;
}
location_result.push(value);
}
if (fields[addressType]) {
let value = component[fields[addressType]];
result.push(value);
}
}
suggestions = [];
show = false;
$nextTick(() => {
locations = locations.concat(result.join(' ') + ', ' + location_result.join(' '));
show = false;
});
})
">
<div class="font-semibold" x-text="suggestion.description"></div>
</button>
</template>
</div>
</div>
<button type="submit" x-bind:disabled="locations.length == 0" :class="{'disabled cursor-not-allowed' : locations.length == 0 }"
class="lg:w-2/6 mt-4 lg:mt-10 flex items-center px-3 py-3 sm:text-lg font-semibold text-red-100 bg-red-600 border-b-2 border-red-600 self-center border-1 rounded-lg space-x-2 justify-center"
x-on:click="$gaEvent('HP_V4', 'Clic', 'Bouton_Recherche_HP')">
<span x-cloak="">Estimer</span>
</button>
</div>
</div>
</template>
</div>
</form>
Text Content
* Acheter * Maison / Villa * Appartement * Terrain * Garage / Parking * Bureau * Commerce * Appartements neufs * Immeuble * Louer * Maison / Villa * Appartement * Garage / Parking * Bureau * Commerce * Immeuble * Vendre * Estimer Gratuit * Professionnels de l’immobilier * Agences Immobilières * Agents Commerciaux * 0 Mes favoris * Acheter * Louer * Vendre * Estimer (gratuit) * Agences immobilières * Agents commerciaux * Mes favoris QUEL EST VOTRE PROJET IMMOBILIER ? Acheter Louer Estimer Recherches récentes -------------------------------------------------------------------------------- Étendre la recherche ? 5 kilomètres 15 kilomètres 20 kilomètres Ne pas étendre ma recherche Nb de pièce minimum 1 2 3 4 5+ Maison Appartement Terrain Parking Afficher plus Terrain Parking Voir les annonces Voir les annonces Activez votre alerte Recevez par mail et en temps réel les nouvelles annonces qui correspondent à votre recherche : En cliquant sur le bouton ci-dessous, je reconnais avoir pris connaissance et accepter sans réserves les Conditions Générales d’Utilisation du site. Créer une alerte pour cette recherche Merci d'indiquer la ville dans laquelle vous cherchez un bien + de critères Recherches récentes -------------------------------------------------------------------------------- Étendre la recherche ? 5 kilomètres 15 kilomètres 20 kilomètres Ne pas étendre ma recherche Nb de pièce minimum 1 2 3 4 5+ Maison Appartement Terrain Parking Afficher plus Terrain Parking Voir les annonces Voir les annonces Activez votre alerte Recevez par mail et en temps réel les nouvelles annonces qui correspondent à votre recherche : En cliquant sur le bouton ci-dessous, je reconnais avoir pris connaissance et accepter sans réserves les Conditions Générales d’Utilisation du site. Créer une alerte pour cette recherche Merci d'indiquer la ville dans laquelle vous cherchez un bien + de critères Obtenez une estimation fiable de votre maison ou appartement, gratuitement et en quelques clics ! Estimer Un pere avec son enfant sur les épaules tenant un cerf-volant Estimez gratuitement la valeur de votre bien ! Trouvez un professionnel expert de l'immobilier LES ANNONCES IMMOBILIÈRES LES ANNONCES DE VENTE * Vente maison Marseille (13000) * Vente maison Bordeaux (33) * Vente maison Toulouse (31) * Vente maison Marmande (47200) * Vente maison Uzès (30700) * Vente maison La Rochelle (17000) * Vente maison Béziers (34500) * Vente maison Montauban (82000) * Vente maison Montélimar (26200) * Vente maison Nîmes (30) * Vente appartement Marseille (13000) * Vente appartement Nice (06) * Vente appartement Montpellier (34) * Vente appartement Lyon (69000) * Vente appartement Paris (75000) * Vente appartement Toulouse (31) * Vente appartement Bordeaux (33) * Vente appartement Cannes (06400) * Vente appartement Nîmes (30) * Vente appartement Nantes (44) LES ANNONCES DE LOCATION * Location maison Guéret (23000) * Location maison Poitiers (86000) * Location maison Aix-en-Provence (13090) * Location maison Toulouse (31) * Location maison Castres (81100) * Location maison Marseille (13000) * Location maison Montélimar (26200) * Location maison Nantes (44) * Location maison Marmande (47200) * Location maison Châteauroux (36000) * Location appartement Toulouse (31) * Location appartement Marseille (13000) * Location appartement Poitiers (86000) * Location appartement Nice (06) * Location appartement Montpellier (34) * Location appartement Lyon (69000) * Location appartement Tours (37) * Location appartement Clermont-Ferrand (63) * Location appartement Grenoble (38) * Location appartement Nancy (54) LES VILLES LES PLUS CONSULTÉES * Nice (06) * Marseille (13000) * Montpellier (34) * Toulouse (31) * Lyon (69000) * Paris (75000) * Bordeaux (33) * Cannes (06400) * Nantes (44) * Nîmes (30) * Aix-en-Provence (13090) * Perpignan (66) * Agde (34300) * Béziers (34500) * Toulon (83) * La Rochelle (17000) * Tours (37) * Poitiers (86000) * Reims (51100) * Rennes (35) Lesiteimmo * Qui sommes-nous ? * CGU et politique de confidentialité * Nous contacter * Logos * Suivez-nous Tout l'immobilier * Le marché de l'immobilier * Toutes les régions * Tous les départements * Toutes les villes * Maisons à vendre * Appartements à vendre * Les annonces par type * Conseils pratiques * Investir * Financement * Actualité immobilière Professionnels * Gagnez des contacts et des mandats * Extranet professionnel * Logiciel immobilier * Création de sites immobiliers @ lesiteimmo.com