PageSourceSearch

https://www.villesavivre.fr/_nuxt/C1YVmYow.js

js villesavivre.fr collected 2026-10-02 21:14:56 UTC 14,972 bytes, 3 lines download raw bytes

1import{d as W,B as ve,u as ee,r as f,g as G,s as te,G as pe,i as h,o as w,l as t,j as a,t as $,b as u,k as v,m as L,H as _,F as Y,p as X,I as fe,J as Q,K as _e,z as se,c as be,w as ye,L as ge,q as he,x as we,M as ke,N as xe,O as Se}from"./CWszUqHM.js";import{d as T,c as qe,F as ze,a as b,E as q,r as Ve,m as Ee,b as Ce,n as $e,e as Ie}from"./K-C9dbAM.js";import{u as ae}from"./Dl9-dZ2q.js";import{u as ne}from"./CghK6nsD.js";import{u as Z,_ as Fe}from"./qcyU3S-k.js";import{u as Te}from"./DymvO9Gp.js";import{_ as z}from"./7Njp0g-K.js";import"./Dl9oqErc.js";(function(){try{var y=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};y.SENTRY_RELEASE={id:"df60f8e"}}catch{}})();try{(function(){var y=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},p=new y.Error().stack;p&&(y._sentryDebugIds=y._sentryDebugIds||{},y._sentryDebugIds[p]="d2d46817-5ab8-4314-8717-9e3956b60be6",y._sentryDebugIdIdentifier="sentry-dbid-d2d46817-5ab8-4314-8717-9e3956b60be6")})()}catch{}const Le={key:0},Re={class:"rate-desc-div"},Ae={class:"rating-stars-div-global"},Oe={class:"rating"},Ne={class:"textinput-div"},Be={class:"rating-stars-div"},De={class:"rating"},Ge={class:"rating"},Me={class:"rating"},Pe={class:"rating"},je={class:"rating"},Ke={class:"rating"},Ue={class:"rating"},He={class:"rating"},Je={key:0,class:"guest-identity"},We={class:"textinput-div"},Qe=["value"],Ye={key:0,class:"invalid-feedback"},Xe={class:"textinput-div"},Ze=["value"],et={key:0,class:"invalid-feedback"},tt={class:"honeypot","aria-hidden":"true"},st=["value"],at={key:1,class:"invalid-feedback submit-error"},nt={class:"button-div"},lt=["disabled"],it={key:1,class:"review-success"},ot=W({__name:"FormReview",props:{city:{},initScoreGlobal:{}},setup(y){T("required",Ve),T("min",Ee),T("max",Ce),T("numeric",$e),T("email",Ie),T("rating",n=>!n||n<1?"Veuillez mettre au moins 1 étoile.":!0),qe({validateOnBlur:!0,validateOnChange:!1,validateOnInput:!1,validateOnModelUpdate:!0,generateMessage:n=>{var e,c,s;switch((e=n.rule)==null?void 0:e.name){case"required":return"Ce champ est requis.";case"min":return`Ce champ doit contenir au moins ${(c=n.rule)==null?void 0:c.params} caractères.`;case"max":return`Ce champ ne doit pas dépasser ${(s=n.rule)==null?void 0:s.params} caractères.`;case"numeric":return"Ce champ doit être un nombre.";case"email":return"Adresse email invalide.";case"rating":return"Veuillez mettre au moins 1 étoile.";default:return"Champ invalide."}}});const p=y,M=fe(),{isAuthenticated:k}=ve(),d=ae(),{trackEvent:m}=ne(),P=ee().public.turnstileSiteKey||"",R=f(!0),A=f(!1),O=f(""),I=f(!1),F=f(!1),x=f(""),V=f(null),N=f(null),S=f(null),B=G(()=>`vav:review-draft:${p.city.slug}`),l=()=>({city_slug:p.city.slug,is_authenticated:k.value}),r=()=>{I.value||(I.value=!0,m("review_form_start",l()),m("review_started",l()))},E=()=>{if(typeof window>"u")return null;try{const n=localStorage.getItem(B.value);return n?JSON.parse(n):null}catch{return null}},U=n=>{if(typeof window>"u")return;const{website:e,"cf-turnstile-response":c,...s}=n;try{localStorage.setItem(B.value,JSON.stringify(s))}catch{}},H=()=>{if(!(typeof window>"u"))try{localStorage.removeItem(B.value)}catch{}},j=Z().get(),K={score_environment:0,score_security:0,score_transportation:0,score_health:0,score_education:0,score_sport:0,score_services:0,score_culture:0,score_global:p.initScoreGlobal??0,body:"",pseudo:j.pseudo,email:j.email,website:""},D=f({...K}),le=async n=>{var c,s,i,g;if(S.value=null,!k.value&&!x.value){S.value="Captcha en cours de chargement, réessayez dans un instant.";return}const e={...n,city:p.city.slug,"cf-turnstile-response":x.value};if(!k.value){const o=Te().get();o&&(e.verified_email_token=o)}m("review_submit_attempt",{...l(),score_global:n.score_global}),F.value=!0;try{await d(`/cities/${p.city.slug}/reviews`,{method:"POST",body:e,auth:!0}),A.value=!k.value,O.value=n.email??"",k.value||Z().set({pseudo:n.pseudo??"",email:n.email??""}),R.value=!1,H(),m("review_submit_success",{...l(),score_global:n.score_global}),m(A.value?"review_submitted_anon":"review_submitted_member",{...l(),score_global:n.score_global})}catch(o){const J=(o==null?void 0:o.status)??(o==null?void 0:o.statusCode)??((c=o==null?void 0:o.response)==null?void 0:c.status),me=((s=o==null?void 0:o.data)==null?void 0:s.message)??((g=(i=o==null?void 0:o.response)==null?void 0:i._data)==null?void 0:g.message);J===429?S.value="Trop de tentatives. Réessayez dans une heure.":J===422?S.value=me??"Vérifiez les champs du formulaire.":S.value="Une erreur est survenue. Réessayez dans un instant.",m("review_submit_error",{...l(),error_status:J??null,error_message:(o==null?void 0:o.message)??"unknown"}),!k.value&&window.turnstile&&V.value!==null&&(window.turnstile.reset(V.value),x.value="")}finally{F.value=!1}},ie=n=>le(n),oe=()=>{m("review_login_link_click",l()),M.emit("open-login-modal",{mode:"login",next:"submitReview"})},re=()=>new Promise((n,e)=>{if(window.turnstile){n();return}const c=document.querySelector("script[data-turnstile]");if(c){c.addEventListener("load",()=>n()),c.addEventListener("error",()=>e(new Error("turnstile script failed")));return}const s=document.createElement("script");s.src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit",s.async=!0,s.defer=!0,s.setAttribute("data-turnstile","1"),s.onload=()=>n(),s.onerror=()=>
1e(new Error("turnstile script failed")),document.head.appendChild(s)}),ue=async()=>{if(!(k.value||!P))try{await re();const n=()=>{const e=window.turnstile;if(!e||!document.getElementById("cf-turnstile-container")){setTimeout(n,100);return}V.value=e.render("#cf-turnstile-container",{sitekey:P,size:"invisible",callback:c=>{x.value=c,N.value=null},"error-callback":()=>{N.value="captcha-error"},"expired-callback":()=>{x.value=""}})};n()}catch{N.value="captcha-load-failed"}};te(()=>{m("review_form_view",l());const n=E();n&&(D.value={...K,...n},m("review_draft_restored",l())),ue()}),pe(()=>{if(V.value!==null&&window.turnstile)try{window.turnstile.remove(V.value)}catch{}});const de=n=>{U(n)},ce=W({name:"FormValuesWatcher",props:{values:{type:Object,required:!0}},emits:["change"],setup(n,{emit:e}){return Q(()=>n.values,c=>e("change",{...c}),{deep:!0}),()=>_e("span",{style:"display:none"})}});return(n,e)=>R.value?(w(),h("div",Le,[t("h2",null,"Évaluez "+$(n.city.full_name),1),t("p",Re," Vous habitez "+$(n.city.full_name)+" ? Évaluez cette commune et racontez-nous votre expérience. ",1),a(u(ze),{onSubmit:ie,onFocusin:r,onClick:r,"initial-values":D.value},{default:v(({values:c})=>[a(u(ce),{values:c,onChange:de},null,8,["values"]),t("div",Ae,[t("div",Oe,[e[0]||(e[0]=t("span",null,"Votre note globale",-1)),a(u(b),{name:"score_global",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_global",class:"invalid-feedback"})])]),t("div",Ne,[a(u(b),{name:"body",rules:"required|min:100|max:4000","validate-on-input":!0,"validate-on-blur":!0},{default:v(({field:s,value:i,errorMessage:g,meta:o})=>[a(Fe,_(s,{"model-value":i,label:"Votre avis",placeholder:"Racontez votre expérience. Indiquez les points positifs et négatifs de la commune. N'utilisez pas de termes offensants.","min-characters":100,"max-characters":4e3,error:o.touched&&g?g:null}),null,16,["model-value","error"])]),_:1})]),e[15]||(e[15]=t("p",{class:"rate-desc-div"},"Indiquez une note pour chacun des critères suivants :",-1)),t("div",Be,[t("div",De,[e[1]||(e[1]=t("span",null,"L'environnement",-1)),a(u(b),{name:"score_environment",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_environment",class:"invalid-feedback"})]),t("div",Ge,[e[2]||(e[2]=t("span",null,"La sécurité",-1)),a(u(b),{name:"score_security",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_security",class:"invalid-feedback"})]),t("div",Me,[e[3]||(e[3]=t("span",null,"Les transports",-1)),a(u(b),{name:"score_transportation",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_transportation",class:"invalid-feedback"})]),t("div",Pe,[e[4]||(e[4]=t("span",null,"La santé",-1)),a(u(b),{name:"score_health",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_health",class:"invalid-feedback"})]),t("div",je,[e[5]||(e[5]=t("span",null,"L'éducation",-1)),a(u(b),{name:"score_education",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_education",class:"invalid-feedback"})]),t("div",Ke,[e[6]||(e[6]=t("span",null,"Sports & loisirs",-1)),a(u(b),{name:"score_sport",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_sport",class:"invalid-feedback"})]),t("div",Ue,[e[7]||(e[7]=t("span",null,"Les services & commerces",-1)),a(u(b),{name:"score_services",rules:"required|numeric|rating"},{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_services",class:"invalid-feedback"})]),t("div",He,[e[8]||(e[8]=t("span",null,"La culture",-1)),a(u(b),{name:"score_culture",rules:"required|numeric|rating"}
1,{default:v(({field:s,value:i})=>[a(z,_(s,{"model-value":i}),null,16,["model-value"])]),_:1}),a(u(q),{name:"score_culture",class:"invalid-feedback"})])]),u(k)?L("",!0):(w(),h("div",Je,[t("div",{class:"account-prompt"},[e[9]||(e[9]=t("span",{class:"account-prompt__text"},"Vous avez déjà un compte ?",-1)),t("button",{type:"button",class:"login-link",onClick:oe},"Se connecter")]),e[12]||(e[12]=t("div",{class:"guest-divider"},[t("span",null,"ou donnez votre avis en invité")],-1)),t("div",We,[a(u(b),{name:"pseudo",rules:"required|min:2|max:50","validate-on-blur":!0},{default:v(({field:s,value:i,errorMessage:g,meta:o})=>[e[10]||(e[10]=t("label",{class:"form-label",for:"review-pseudo"},"Pseudo",-1)),t("input",_({id:"review-pseudo"},s,{value:i,class:"form-input",type:"text",autocomplete:"nickname",maxlength:"50"}),null,16,Qe),o.touched&&g?(w(),h("p",Ye,$(g),1)):L("",!0)]),_:1,__:[10]})]),t("div",Xe,[a(u(b),{name:"email",rules:"required|email|max:255","validate-on-blur":!0},{default:v(({field:s,value:i,errorMessage:g,meta:o})=>[e[11]||(e[11]=t("label",{class:"form-label",for:"review-email"},"Email",-1)),t("input",_({id:"review-email"},s,{value:i,class:"form-input",type:"email",autocomplete:"email",maxlength:"255"}),null,16,Ze),o.touched&&g?(w(),h("p",et,$(g),1)):L("",!0)]),_:1,__:[11]})]),e[13]||(e[13]=t("p",{class:"email-reassure"}," 🔒 Sert uniquement à confirmer votre avis — jamais affiché, pas de spam. ",-1)),t("div",tt,[a(u(b),{name:"website"},{default:v(({field:s,value:i})=>[t("input",_(s,{value:i,type:"text",tabindex:"-1",autocomplete:"off"}),null,16,st)]),_:1})]),e[14]||(e[14]=t("div",{id:"cf-turnstile-container"},null,-1))])),S.value?(w(),h("p",at,$(S.value),1)):L("",!0),t("div",nt,[t("button",{type:"submit",disabled:F.value},$(F.value?"Envoi…":"Publier mon évaluation"),9,lt)])]),_:1,__:[15]},8,["initial-values"])])):(w(),h("div",it,[A.value?(w(),h(Y,{key:0},[e[18]||(e[18]=t("h3",null,"Vérifiez votre boîte mail 📬",-1)),t("p",null,[e[16]||(e[16]=X(" Nous venons d'envoyer un lien de confirmation à ")),t("strong",null,$(O.value),1),e[17]||(e[17]=X(". Cliquez dessus pour publier votre avis. Le lien est valable 7 jours. "))]),e[19]||(e[19]=t("p",{class:"rate-desc-small"}," Pas reçu ? Vérifiez vos spams. Si vous ne le trouvez pas, reposez votre avis dans une heure. ",-1))],64)):(w(),h(Y,{key:1},[e[20]||(e[20]=t("h3",null,"Merci pour votre évaluation 🙌",-1)),e[21]||(e[21]=t("p",null,"Votre avis est en cours de modération automatique et sera publié sous peu.",-1))],64))]))}}),rt=se(ot,[["__scopeId","data-v-d5f1d4ed"]]),ut={class:"city-div"},dt={id:"root"},ct={key:0},mt={class:"city-content"},vt={class:"search-desktop"},pt={key:0,class:"form-container"},ft=W({__name:"post-avis",async setup(y){let p,M;const k=f(""),d=f(null),m=f(0),C=be(),P=ee(),{public:{siteTitle:R}}=P,A=ae(),{trackEvent:O}=ne(),I=async l=>{try{return await A(`/cities/${l}`)}catch(r){return console.error("Erreur lors de la récupération de la ville:",r),null}};if(C.query.city){const l=([p,M]=ye(()=>I(C.query.city)),p=await p,M(),p);l!=null&&l.city&&(d.value=l.city,C.query.global&&(m.value=parseInt(C.query.global)||0))}const F=G(()=>!d.value);Q(()=>C.query.city,async l=>{var r;if(l&&l!==((r=d.value)==null?void 0:r.slug)){const E=await I(l);E!=null&&E.city&&(d.value=E.city)}}),Q(()=>C.query.global,l=>{l&&(m.value=parseInt(l)||0)},{immediate:!0});const x=f(!1),V=async l=>{const r=await I(l.document.slug);r!=null&&r.city&&(d.value=r.city,O("review_city_selected",{city_slug:r.city.slug,source:"search"}))};te(()=>{var l;O("review_funnel_view",{has_city:!!d.value,city_slug:((l=d.value)==null?void 0:l.slug)??null,has_init_score:m.value>0,init_score_global:m.value||null})});const N=G(()=>d.value?`Evaluez ${d.value.full_name} - ${R}`:`Evaluez votre commune - ${R}`),S=G(()=>d.value?`Donnez votre avis sur ${d.value.full_name} (${d.value.region.fr_code_dep} - ${d.value.region.name}). 
2       Sécurité, offre de transport, culture ou prix immobiliers, évaluez votre ville.`:`Donnez votre avis sur la qualité de vie dans votre commune, la sécurité dans votre ville, l'offre de transport, 
3       la culture ou les prix immobiliers.`),B=G(()=>d.value?"noindex,follow":"index,follow");return ge(()=>({title:N.value,meta:[{hid:"description",name:"description",content:S.value},{hid:"robots",name:"robots",content:B.value}]})),(l,r)=>{const E=ke,U=we("FontAwesomeIcon"),H=xe,j=rt,K=he;return w(),h("div",null,[a(K,null,{default:v(()=>[t("div",ut,[t("div",dt,[F.value?(w(),h("div",ct,[t("section",mt,[r[3]||(r[3]=t("h2",null,"Recherche de la commune",-1)),r[4]||(r[4]=t("p",null,"Quelle commune souhaitez-vous évaluez ?",-1)),t("div",vt,[a(E,{redirect:!1,onSearchSelected:V})]),t("button",{type:"button",class:"search-mobile",onClick:r[0]||(r[0]=D=>x.value=!0),"aria-label":"Rechercher une ville"},[a(U,{icon:["fas","search"],class:"icon"}),r[2]||(r[2]=t("span",{class:"placeholder"},"Ville, code postal...",-1))]),a(H,{modelValue:x.value,"onUpdate:modelValue":r[1]||(r[1]=D=>x.value=D),redirect:!1,onSelect:V},null,8,["modelValue"])])])):L("",!0)])]),d.value?(w(),h("div",pt,[a(j,{city:d.value,token:k.value,initScoreGlobal:m.value},null,8,["city","token","initScoreGlobal"])])):L("",!0),t("div",{class:Se({"post-avis-spacer":!d.value})},null,2)]),_:1})])}}}),St=se(ft,[["__scopeId","data-v-6abe8c3b"]]);export{St as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.