1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{3326:(e,a,s)=>{"use strict";s.d(a,{SurveyForm:()=>f});var r=s(5155),l=s(2115);let n="survey_draft_";function i(e,a){let s=e.conditional_rules;return!s||0===s.length||s.every(e=>{var s,r;return s=e,r=a,"eq"===s.op&&r[s.if_question]===s.value})}function t(e){let{answered:a,total:s}=e,l=0===s?0:Math.round(a/s*100);return(0,r.jsxs)("div",{className:"progress-bar-container",children:[(0,r.jsx)("div",{className:"progress-bar-fill",role:"progressbar","aria-label":"Progreso de la encuesta: ".concat(l,"%"),"aria-valuenow":l,"aria-valuemin":0,"aria-valuemax":100,style:{width:"".concat(l,"%")}}),(0,r.jsxs)("span",{className:"progress-bar-label","aria-hidden":"true",children:[a,"/",s," respondidas"]})]})}function c(e){let{name:a,legend:s,options:l,value:n,required:i,onChange:t,error:c}=e;return(0,r.jsxs)("fieldset",{className:"question-fieldset",children:[(0,r.jsxs)("legend",{className:"question-legend",children:[s,i&&(0,r.jsx)("span",{className:"required-mark","aria-hidden":"true",children:" *"}),i&&(0,r.jsx)("span",{className:"sr-only",children:" (obligatorio)"})]}),(0,r.jsx)("div",{className:"options-list",role:"list",children:l.map(e=>{let s="".concat(a,"_").concat(e.value.replace(/\s+/g,"_"));return(0,r.jsx)("div",{className:"option-item",role:"listitem",children:(0,r.jsxs)("label",{className:"option-label",htmlFor:s,children:[(0,r.jsx)("input",{type:"radio",id:s,name:a,value:e.value,checked:n===e.value,onChange:()=>t(e.value),"aria-required":i,className:"option-input"}),(0,r.jsx)("span",{className:"option-text",children:e.label})]})},e.value)})}),c&&(0,r.jsx)("p",{role:"alert",className:"field-error",id:"".concat(a,"-error"),children:c})]})}function o(e){let{name:a,legend:s,options:l,value:n,maxSelect:i,required:t,onChange:c,error:o}=e,d=null!==i&&n.length>=i;return(0,r.jsxs)("fieldset",{className:"question-fieldset",children:[(0,r.jsxs)("legend",{className:"question-legend",children:[s,t&&(0,r.jsx)("span",{className:"required-mark","aria-hidden":"true",children:" *"}),t&&(0,r.jsx)("span",{className:"sr-only",children:" (obligatorio)"})]}),null!==i&&(0,r.jsxs)("p",{className:"max-select-hint","aria-live":"polite",children:["Eleg\xed hasta ",i," opciones",n.length>0&&" \xb7 ".concat(n.length,"/").concat(i," seleccionadas")]}),(0,r.jsx)("div",{className:"options-list",role:"list",children:l.map(e=>{let s="".concat(a,"_").concat(e.value.replace(/\s+/g,"_")),l=n.includes(e.value),i=d&&!l;return(0,r.jsx)("div",{className:"option-item",role:"listitem",children:(0,r.jsxs)("label",{className:"option-label".concat(i?" option-disabled":""),htmlFor:s,children:[(0,r.jsx)("input",{type:"checkbox",id:s,name:a,value:e.value,checked:l,disabled:i,onChange:()=>{var a;return a=e.value,void(n.includes(a)?c(n.filter(e=>e!==a)):!d&&c([...n,a]))},"aria-required":t,"aria-disabled":i,className:"option-input"}),(0,r.jsx)("span",{className:"option-text",children:e.label})]})},e.value)})}),o&&(0,r.jsx)("p",{role:"alert",className:"field-error",id:"".concat(a,"-error"),children:o})]})}function d(e){let{name:a,legend:s,ratingOptions:l,value:n,required:i,onChange:t,error:c}=e,{min:o,max:d,min_label:u,max_label:m}=l,h=Array.from({length:d-o+1},(e,a)=>o+a);return(0,r.jsxs)("fieldset",{className:"question-fieldset",children:[(0,r.jsxs)("legend",{className:"question-legend",children:[s,i&&(0,r.jsx)("span",{className:"required-mark","aria-hidden":"true",children:" *"}),i&&(0,r.jsx)("span",{className:"sr-only",children:" (obligatorio)"})]}),(0,r.jsxs)("div",{className:"rating-wrapper",role:"group","aria-label":"Escala ".concat(o," a ").concat(d),children:[(0,r.jsx)("span",{className:"rating-label rating-label-min","aria-hidden":"true",children:u}),(0,r.jsx)("div",{className:"rating-steps",children:h.map(e=>{let s="".concat(a,"_").concat(e);return(0,r.jsxs)("label",{className:"rating-step",htmlFor:s,children:[(0,r.jsx)("input",{type:"radio",id:s,name:a,value:e,checked:n===e,onChange:()=>t(e),"aria-required":i,"aria-label":"".concat(e," — ").concat(e===o?u:e===d?m:""),className:"rating-input sr-only"}),(0,r.jsx)("span",{className:"rating-dot","aria-hidden":"true",children:e})]},e)})}),(0,r.jsx)("span",{className:"rating-label rating-label-max","aria-hidden":"true",children:m})]}),c&&(0,r.jsx)("p",{role:"alert",className:"field-error",id:"".concat(a,"-error"),children:c})]})}function u(e){let{name:a,label:s,value:l,required:n,onChange:i,error:t}=e;return(0,r.jsxs)("div",{className:"question-fieldset",children:[(0,r.jsxs)("label",{className:"question-legend",htmlFor:a,children:[s,n&&(0,r.jsx)("span",{className:"required-mark","aria-hidden":"true",children:" *"}),n&&(0,r.jsx)("span",{className:"sr-only",children:" (obligatorio)"})]}),(0,r.jsx)("textarea",{id:a,name:a,value:l,rows:4,required:n,"aria-required":n,"aria-describedby":t?"".concat(a,"-error"):void 0,"aria-invalid":!!t,onChange:e=>i(e.target.value),className:"text-area",placeholder:"Escrib\xed tu respuesta ac\xe1 (opcional)…"}),t&&(0,r.jsx)("p",{role:"alert",className:"field-error",id:"".concat(a,"-error"),children:t})]})}function m(e){return Array.isArray(e)}function h(e){var a,s,l;let{question:n,answers:i,onChange:t,errors:h}=e,{code:p,type:x,prompt:v,required:f,max_select:j,options:g}=n,N=h[p];return"single_choice"===x&&m(g)?(0,r.jsx)(c,{name:p,legend:v,options:g,value:i[p],required:f,onChange:e=>t(p,e),error:N}):"multiple_choice"===x&&m(g)?(0,r.jsx)(o,{name:p,legend:v,options:g,value:null!=(a=i[p])?a:[],maxSelect:j,required:f,onChange:e=>t(p,e),error:N}):"rating"===x&&"object"==typeof(l=g)&&null!==l&&"min"in l&&"max"in l?(0,r.jsx)(d,{name:p,legend:v,ratingOptions:g,value:i[p],required:f,onChange:e=>t(p,e),error:N}):"text_long"===x||"text_short"===x?(0,r.jsx)(u,{name:p,label:v,value:null!=(s=i[p])?s:"",required:f,onChange:e=>t(p,e),error:N}):null}let p={A:"Datos Generales",B:"\xbfViv\xeds con discapacidad?",C:"Familiares con Discapacidad",D:"Adultos Mayores a Cargo",E:"Tu Rol como Cuidador/a",F:"Impacto Econ\xf3mico",G:"Bienestar y Descanso",H:"Necesidades"};function x(e){let{surveyTitle:a,questions:s,answers:l,onStartOver:n}=e,t=s.filter(e=>i(e,l)),c="";return(0,r.jsxs)("div",{className:"summary-container",role:"main",children:[(0,r.jsxs)("div",{className:"summary-header",children:[(0,r.jsx)("h1",{className:"summary-title",children:"Resumen de tus respuestas"}),(0,r.jsxs)("p",{className:"summary-subtitle",children:[a," — revis\xe1 lo que respondiste antes de continuar al env\xedo."]}),(0,r.jsxs)("p",{className:"summary-note",role:"note",children:[(0,r.jsx)("strong",{children:"Nota:"})," en esta etapa no se env\xeda nada a la base de datos. El env\xedo definitivo (con consentimiento) ser\xe1 en el paso siguiente."]})]}),(0,r.jsx)("dl",{className:"summary-list",children:t.map(e=>{var a,s;let n=e.code.replace(/\d+$/,""),i=n!==c;return c=n,(0,r.jsxs)("div",{children:[i&&(0,r.jsx)("h2",{className:"summary-section-heading",children:null!=(a=p[n])?a:n}),(0,r.jsxs)("div",{className:"summary-item",children:[(0,r.jsxs)("dt",{className:"summary-question",children:[(0,r.jsx)("span",{className:"summary-code",children:e.code})," ",e.prompt]}),(0,r.jsx)("dd",{className:"summary-answer",children:function(e,a){if(null==a||""===a)return"—";let{type:s,options:r}=e;if("single_choice"===s&&Array.isArray(r)){var l;let e=r.find(e=>e.value===a);return null!=(l=null==e?void 0:e.label)?l:String(a)}if("multiple_choice"===s&&Array.isArray(a)&&Array.isArray(r)){let e=a.map(e=>{var a,s;return null!=(s=null==(a=r.find(a=>a.value===e))?void 0:a.label)?s:e});return e.length>0?e.join(", "):"—"}return"rating"===s&&r&&!Array.isArray(r)?"".concat(a," / ").concat(r.max," (").concat(r.min_label," → ").concat(r.max_label,")"):String(a)}(e,null!=(s=l[e.code])?s:null)})]})]},e.id)})}),(0,r.jsx)("div",{className:"summary-actions",children:(0,r.jsx)("button",{type:"button",onClick:n,className:"btn btn-secondary",children:"Volver a la encuesta"})})]})}let v=[{prefix:"A",title:"Datos Generales"},{prefix:"B",title:"\xbfViv\xeds con discapacidad?",sensitive:!0},{prefix:"C",title:"Familiares con Discapacidad",sensitive:!0},{prefix:"D",title:"Adultos Mayores a Cargo",sensitive:!0},{prefix:"E",title:"Tu Rol como Cuidador/a"},{prefix:"F",title:"Impacto Econ\xf3mico"},{prefix:"G",title:"Bienestar y Descanso"},{prefix:"H",title:"Necesidades"}];function f(e){let{survey:a,questions:s}=e,[c,o]=(0,l.useState)({}),[d,u]=(0,l.useState)({}),[m,p]=(0,l.useState)(!1),[f,j]=(0,l.useState)(!1),[g,N]=(0,l.useState)("");(0,l.useRef)({}),(0,l.useEffect)(()=>{let e=function(e){try{let a=localStorage.getItem(n+e);return a?JSON.parse(a):{}}catch(e){return{}}}(a.id);Object.keys(e).length>0&&o(e),j(!0)},[a.id]),(0,l.useEffect)(()=>{if(f){var e=a.id;try{localStorage.setItem(n+e,JSON.stringify(c))}catch(e){}}},[c,f,a.id]);let y=(0,l.useCallback)((e,a)=>{o(r=>{let l={...r,[e]:a},n=function(e,a,s,r){let l={...r,[e]:a};return s.filter(a=>{var s;return!!(null==(s=a.conditional_rules)?void 0:s.length)&&!!a.conditional_rules.some(a=>a.if_question===e)&&!i(a,l)}).map(e=>e.code)}(e,a,s,r);for(let e of n)l[e]=void 0;return n.length>0?N("Se ocultaron preguntas relacionadas y se limpiaron sus respuestas."):s.some(a=>{var s;return(null==(s=a.conditional_rules)?void 0:s.some(a=>a.if_question===e))&&i(a,l)&&!i(a,r)})&&N("Aparecieron nuevas preguntas seg\xfan tu respuesta."),l}),u(a=>{if(!a[e])return a;let{[e]:s,...r}=a;return r})},[s]),b=s.filter(e=>i(e,c)),q=b.filter(e=>{let a=c[e.code];return null!=a&&""!==a&&!(Array.isArray(a)&&0===a.length)}).length;if(m)return(0,r.jsx)(x,{surveyTitle:a.title,questions:s,answers:c,onStartOver:function(){o({}),p(!1),u({})}});let _=new Map;for(let e of b){let a=e.code.replace(/\d+$/,"");if(!_.has(a)){var A;let e=v.find(e=>e.prefix===a);_.set(a,{prefix:a,title:null!=(A=null==e?void 0:e.title)?A:a,sensitive:null==e?void 0:e.sensitive,questions:[]})}_.get(a).questions.push(e)}return(0,r.jsxs)("div",{className:"survey-wrapper",children:[(0,r.jsx)("a",{href:"#survey-form",className:"skip-link",children:"Ir al formulario"}),(0,r.jsx)("div",{"aria-live":"polite","aria-atomic":"true",className:"sr-only",role:"status",children:g}),(0,r.jsxs)("header",{className:"survey-header",children:[(0,r.jsx)("h1",{className:"survey-title",children:a.title}),(0,r.jsx)("p",{className:"survey-anon-note",children:"Esta encuesta es an\xf3nima. Tus respuestas no te identifican."})]}),(0,r.jsx)("div",{className:"survey-progress-sticky","aria-label":"Barra de progreso",children:(0,r.jsx)(t,{answered:q,total:b.length})}),(0,r.jsx)("main",{id:"survey-form",children:(0,r.jsxs)("form",{onSubmit:function(e){if(e.preventDefault(),!function(){let e={};for(let a of s){if(!a.required||!i(a,c))continue;let s=c[a.code];(null==s||""===s||Array.isArray(s)&&0===s.length)&&(e[a.code]="Este campo es obligatorio.")}return u(e),0===Object.keys(e).length}()){let e=Object.keys(d)[0];if(e){var r;null==(r=document.getElementById(e))||r.focus()}return}var l=a.id;try{localStorage.removeItem(n+l)}catch(e){}p(!0)},noValidate:!0,"aria-label":"Encuesta: ".concat(a.title),children:[Array.from(_.values()).map(e=>(0,r.jsxs)("section",{className:"survey-section","aria-labelledby":"section-".concat(e.prefix),children:[(0,r.jsxs)("div",{className:"section-header",children:[(0,r.jsx)("h2",{id:"section-".concat(e.prefix),className:"section-title",children:e.title}),e.sensitive&&(0,r.jsx)("p",{className:"section-sensitive-note",role:"note",children:"Esta secci\xf3n contiene preguntas sensibles sobre salud o discapacidad. Responder es completamente voluntario."})]}),e.questions.map(e=>(0,r.jsx)("div",{className:"question-wrapper","data-code":e.code,children:(0,r.jsx)(h,{question:e,answers:c,onChange:y,errors:d})},e.id))]},e.prefix)),(0,r.jsx)("div",{className:"form-footer",children:(0,r.jsx)("button",{type:"submit",className:"btn btn-primary",children:"Ver resumen de respuestas"})})]})})]})}},4814:(e,a,s)=>{Promise.resolve().then(s.bind(s,3326))}},e=>{var a=a=>e(e.s=a);e.O(0,[441,684,358],()=>a(4814)),_N_E=e.O()}]); |