jQuery( "form.webform-submission-form" ).on( "submit", function( event ) {
let btn = jQuery("input.webform-button--submit");
btn.addClass('form-btn-disable');
});
const formulario = document.querySelector('form[id^="webform-submission-formulario-otras-consultas"]');
if (formulario) {
let selectEditTemaHasChanged = false; // Bandera para controlar la validación del select tema luego del primer cambio
let selectEditTipoHasChanged = false; // Bandera para controlar la validación del select tipo de documento luego del primer cambio
let inputTHasChanged = false; // Bandera para controlar la validación
let inputTfHasChanged = false; // Bandera para controlar la validación
const targetNode = document.querySelector('#block-mainpagecontent');// Selecciona el elemento que quieres observar usando querySelector
// Configura las opciones del observador (qué tipos de cambios observar)
const config = {
attributes: true,
childList: true,
subtree: true,
characterData: true,
attributeOldValue: true,
};
// Callback que se ejecuta cuando se detecta un cambio
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
const form = document.querySelector('form[id^="webform-submission-formulario-otras-consultas"]');
if (mutation.target === form) {
const pasoUno = document.querySelector('[id^="edit-paso-1"]');
if (pasoUno) {
addTextInputFile();
let inputMensaje = document.querySelector('textarea[name="motivo"]');
let value = inputMensaje.value;
if (value.length > 0) {
inputMensaje.classList.remove('error');
removeError(inputMensaje);
}
eventInputs();
errorInputUpload();
} else {
eventInputs();
}
initializeProgress();
// Modal - cierra el modal que se abre automatico para que se vea solo al cargar la página la primera vez
const modal = document.querySelector("#js-modal-page-show-modal.modal-webform-alert.show");
if (modal) {
cerrarModal();
}
} else {
const pasoUno = document.querySelector('[id^="edit-paso-1"]');
if (pasoUno) {
// input file eliminar individual
const wrapperUpload = document.querySelector('.form-item-documento-adjunto .form-managed-file');
var uploadWrapper = document.querySelector('[id^="edit-flexbox-05"] [id^="ajax-wrapper"]').parentElement;
var wrapper = document.querySelector('[id^="edit-flexbox-05"] [id^="ajax-wrapper"]').parentElement.parentElement;
if (mutation.target === wrapperUpload || mutation.target === uploadWrapper || mutation.target === wrapper) {
eventInputs();
errorInputUpload();
}
const spanElement = document.querySelector('[id^="select2-edit-tema"]');
// Verificar si el cambio fue en el atributo 'title' del select tema
if (mutation.type === 'attributes' && mutation.attributeName === 'title' && mutation.target === spanElement) {
const newTitleValue = spanElement.getAttribute('title');
if (newTitleValue !== '- Seleccionar -') {
spanElement.closest('.select2').classList.remove('error');
spanElement.closest('.select2').parentElement.querySelector('select').classList.remove('error');
var description = spanElement.closest('.select2').parentElement.querySelector('.description-error');
if (description) {
description.remove();
}
}
}
addTextInputFile();
} else {
const spanElement = document.querySelector('[id^="select2-edit-tipo-de-documento"]');
// Verificar si el cambio fue en el atributo 'title' del select tipo de documento
if (mutation.type === 'attributes' && mutation.attributeName === 'title' && mutation.target === spanElement) {
validateDocumento();
const newTitleValue = spanElement.getAttribute('title');
if (newTitleValue !== '- Seleccionar -') {
spanElement.closest('.select2').classList.remove('error');
spanElement.closest('.select2').parentElement.querySelector('select').classList.remove('error');
var description = spanElement.closest('.select2').parentElement.querySelector('.description-error');
if (description) {
description.remove();
}
}
}
}
}
}
};
// Crea una instancia de MutationObserver y pasa el callback
const observer = new MutationObserver(callback);
// Crea la barra de progreso
function addProgressBar() {
if (!document.querySelector('.progress')) {
var trackerElement = document.querySelector('.webform-progress-tracker');
if (!trackerElement) return;
var progressDiv = document.createElement('div');
progressDiv.className = 'progress';
var progressBarDiv = document.createElement('div');
progressBarDiv.className = 'progress-bar';
progressDiv.appendChild(progressBarDiv);
trackerElement.parentNode.insertBefore(progressDiv, trackerElement.nextSibling);
// Crear el elemento
para mostrar el número de paso
var numStepsParagraph = document.createElement('p');
numStepsParagraph.className = 'num-steps';
progressDiv.parentNode.insertBefore(numStepsParagraph, progressDiv);
}
}
// Actualiza la barra de progreso y el numSteps actual
function updateProgress() {
const progressListItems = document.querySelectorAll(".webform-progress-tracker li");
const progressBar = document.querySelector(".progress-bar");
const numStepsParagraph = document.querySelector(".num-steps");
let totalSteps = progressListItems.length;
let completedSteps = 0;
let currentStep = 0;
progressListItems.forEach((item) => {
if (item.classList.contains("is-complete") || item.classList.contains("is-active")) {
completedSteps++;
currentStep++;
}
});
numStepsParagraph.textContent = 'Paso ' + currentStep + ' de ' + totalSteps;
let percent = (completedSteps / totalSteps) * 100;
if (completedSteps === totalSteps) {
percent = 95;
}
progressBar.style.width = percent + "%";
}
function initializeProgress() {
addProgressBar();
updateProgress();
// Desactiva el observador temporalmente para evitar bucles infinitos
observer.disconnect();
const nextStepButtons = document.querySelectorAll(".webform-button--next");
nextStepButtons.forEach((button) => {
button.addEventListener("click", () => {
observer.observe(targetNode, config);
});
});
const prevStepButtons = document.querySelectorAll(".webform-button--previous");
prevStepButtons.forEach((button) => {
button.addEventListener("click", () => {
observer.observe(targetNode, config);
});
});
// Reactiva el observador
observer.observe(targetNode, config);
}
// añade texto al input file
function addTextInputFile() {
const pasoUno = document.querySelector('[id^="edit-paso-1"]');
if (pasoUno) {
// Verificar el inputfile ya no se haya añadido
const inputFile = document.querySelector('.form-file.form__input');
const A = document.querySelector('.form-card .form-item-documento-adjunto .description+.form-text-upload');
const formInput = document.querySelector('.form-card .form-item-documento-adjunto .description');
if (inputFile && !A) {
var before = document.querySelector('.form-card .form-item-documento-adjunto .form-managed-file');
before.classList.add('input-before');
const div = document.createElement('div');
div.classList.add('form-text-upload');
div.innerHTML = '
Arrastra aquí tus archivos o
busca aquíSubir archivos
';
formInput.parentNode.insertBefore(div, formInput.nextSibling);
}
if (!inputFile && formInput) {
formInput.style.display = "none";
}
}
}
function errorInputUpload() {
const pasoUno = document.querySelector('[id^="edit-paso-1"]');
if (pasoUno) {
let inputFile = document.querySelector('.form-item.form-type-managed-file');
let error = inputFile.parentElement.querySelector('.site__messages');
let wrapper = inputFile.parentElement;
let inputFile2 = document.querySelector('.form-item.form-type-managed-file .form-managed-file');
let error2 = inputFile2.querySelector('.messages--error'); // error
if (error && !wrapper.classList.contains('flex-column') && !error2) {
wrapper.classList.add('d-flex');
wrapper.classList.add('flex-column');
error.innerHTML = 'Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.
';
error.style.marginTop = "16px";
error.style.order = "1";
} else if (!error && wrapper.classList.contains('flex-column')) {
wrapper.classList.remove('d-flex');
wrapper.classList.remove('flex-column');
}
if (error2 && !inputFile2.classList.contains('flex-column') && !error) {
inputFile2.classList.add('d-flex');
inputFile2.classList.add('flex-column');
error2.innerHTML = 'Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.
';
error2.style.marginTop = "16px";
error2.style.order = "1";
} else if (!error2 && inputFile2.classList.contains('flex-column')) {
inputFile2.classList.remove('d-flex');
inputFile2.classList.remove('flex-column');
}
if (error && error2 && !error2.classList.contains('d-none')) {
wrapper.classList.add('d-flex');
wrapper.classList.add('flex-column');
error2.classList.add('d-none');
error.innerHTML = 'Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.
';
error.style.marginTop = "16px";
error.style.order = "1";
}
if (error && error.textContent !== "Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.") {
error.innerHTML = 'Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.
';
error.style.marginTop = "16px";
error.style.order = "1";
}
if (error2 && error2.textContent !== "Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.") {
error2.innerHTML = 'Asegúrate de no adjuntar más de 3 archivos, de que su formato sea jpg, pdf o png y de que ninguno supere los 4 MB.
';
error2.style.marginTop = "16px";
error2.style.order = "1";
}
}
}
// valida los inputs
function validateInput(inputElement, errorMessage) {
const value = inputElement.value.trim();
let regex;
if (inputElement.id.startsWith('edit-nombre') || inputElement.id.startsWith('edit-apellidos-razon-social')) {
regex = /^[a-zA-ZáéíóúÁÉÍÓÚñÑ\s']+$/i;
} else if (inputElement.id.startsWith('edit-email')) {
regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/i;
} else if (inputElement.id.startsWith('edit-telefono-movil')) {
regex = /^\+34\s?[67](\s?\d){8}$|^\+(?!34)[1-9](?:\s?\d){7,14}$/;
} else if (inputElement.id.startsWith('edit-telefono-fijo')) {
regex = /^\+34\s?[89](\s?\d){8}$|^\+(?!34)[1-9](?:\s?\d){7,14}$/;
} else {
regex = null;
}
if (!regex || value.startsWith(' ') || !regex.test(value)) {
if (inputElement.id.startsWith('edit-telefono') && value.length > 3) {
inputElement.classList.add('error');
showError(inputElement, errorMessage);
} else if (!inputElement.id.startsWith('edit-telefono') && value.length > 0) {
inputElement.classList.add('error');
showError(inputElement, errorMessage);
}
} else {
inputElement.classList.remove('error');
removeError(inputElement);
}
if (value === "") {
inputElement.classList.remove('error');
removeError(inputElement);
}
}
// añade eneventos a los inputs
function eventInputs() {
const pasoUno = document.querySelector('[id^="edit-paso-1"]');
const pasoDos = document.querySelector('[id^="edit-paso-2"]');
if (pasoUno) {
var inputlist = document.querySelectorAll('.form-item-documento-adjunto .form-managed-file .form-type-checkbox input');
inputlist.forEach((item) => {
item.addEventListener('click', () => {
item.checked = true;
let removeButton = document.querySelector('input[name="documento_adjunto_remove_button"]');
if (removeButton) {
// Crea un nuevo evento de tipo 'mousedown'
var evento = new MouseEvent('mousedown', {
'view': window,
'bubbles': true,
'cancelable': true
});
removeButton.dispatchEvent(evento);
}
});
item.addEventListener('keydown', (event) => {
if (event.key === ' ' || (event.key === 'Enter')) {
item.checked = true;
let removeButton = document.querySelector('input[name="documento_adjunto_remove_button"]');
if (removeButton) {
// Crea un nuevo evento de tipo 'mousedown'
var evento = new MouseEvent('mousedown', {
'view': window,
'bubbles': true,
'cancelable': true
});
removeButton.dispatchEvent(evento);
}
}
});
});
}
if (pasoDos) {
const inputNombre = document.querySelector('input[name="nombre"]');
const inputApellidosRazonSocial = document.querySelector('input[name="apellidos_razon_social"]');
const inputEmail = document.querySelector('input[name="email"]');
const inputTelefonoMovil = document.querySelector('input[name="telefono_movil"]');
const inputTelefonoFijo = document.querySelector('input[name="telefono_fijo"]');
const inputDocumento = document.querySelector('input[name="numero_documento"]');
// Añadir event listeners a los inputs
inputNombre.addEventListener('input', function () {
validateInput(inputNombre, 'Formato incorrecto.');
});
inputApellidosRazonSocial.addEventListener('input', function () {
validateInput(inputApellidosRazonSocial, 'Formato incorrecto.');
});
inputEmail.addEventListener('blur', function () {
validateInput(inputEmail, 'Email incorrecto. El formato correcto es tucorreo@tucorreo.com');
});
inputTelefonoMovil.addEventListener('blur', function () {
inputTHasChanged = true;
validateInput(inputTelefonoMovil, 'Teléfono incorrecto. El formato debe contener 9 dígitos y el prefijo del país.');
});
inputTelefonoFijo.addEventListener('blur', function () {
inputTfHasChanged = true;
validateInput(inputTelefonoFijo, 'Teléfono incorrecto. El formato debe contener 9 dígitos y el prefijo del país.');
});
inputDocumento.addEventListener('input', validateDocumento);
// Añadir los event listeners
inputTelefonoMovil.addEventListener('focus', handleFocus);
inputTelefonoMovil.addEventListener('blur', handleBlur);
inputTelefonoFijo.addEventListener('focus', handleFocus);
inputTelefonoFijo.addEventListener('blur', handleBlur);
}
}
// valida el input tipo de documento en función de la selección en tipo de documento
function validateDocumento() {
const spanElement = document.querySelector('[id^="select2-edit-tipo-de-documento"]');
const selectedValue = spanElement.getAttribute('title');
const inputDocumento = document.querySelector('input[name="numero_documento"]');
const value = inputDocumento.value.trim();
if (value.length > 8) {
let isValid = false;
switch (selectedValue) {
case 'NIF':
isValid = validateNIF(value);
break;
case 'CIF':
isValid = validateCIF(value);
break;
case 'Tarjeta de Residente':
isValid = validateNIE(value);
break;
case 'Pasaporte':
isValid = validatePasaporte(value);
break;
default:
isValid = false;
}
if (!isValid) {
inputDocumento.classList.add('error');
showError(inputDocumento, 'Documento incorrecto. Debe contener todos los números y la letra.');
// Añadir la clase 'd-none' al hermano con clase 'description'
const siblingDescription = inputDocumento.parentElement.querySelector('.description');
if (siblingDescription) {
siblingDescription.classList.add('d-none');
}
} else {
inputDocumento.classList.remove('error');
removeError(inputDocumento);
}
}
}
// validación NIF (9 caracteres)
function validateNIF(nif) {
const nifPattern = /^[0-9]{8}[a-z]$/i;
if (!nifPattern.test(nif)) return false;
const letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
const numero = nif.substr(0, 8);
const letra = nif.substr(8, 1).toUpperCase();
const expectedLetter = letras.charAt(parseInt(numero, 10) % 23);
return letra === expectedLetter;
}
// validación CIF (9 caracteres)
function validateCIF(cif) {
const cifPattern = /^[A-HJ-NP-SUVW][0-9]{7}[0-9A-J]$/i;
if (!cifPattern.test(cif)) return false;
const letter = cif.charAt(0).toUpperCase();
const numbers = cif.substr(1, 7);
const control = cif.substr(8, 1).toUpperCase();
let sumA = 0, sumB = 0;
for (let i = 0; i < 7; i++) {
const digit = parseInt(numbers[i], 10);
if (i % 2 === 0) {
const prod = digit * 2;
sumB += Math.floor(prod / 10) + (prod % 10);
} else {
sumA += digit;
}
}
const totalSum = sumA + sumB;
const controlDigit = (10 - (totalSum % 10)) % 10;
const controlLetter = 'JABCDEFGHI'.charAt(controlDigit);
if (/[ABEH]/.test(letter)) {
return control === controlDigit.toString();
} else if (/[KPQS]/.test(letter)) {
return control === controlLetter;
} else {
return control === controlDigit.toString() || control === controlLetter;
}
}
// validación NIE - Tarjeta de residente (9 caracteres)
function validateNIE(nie) {
const niePattern = /^[xyz][0-9]{7}[a-z]$/i;
if (!niePattern.test(nie)) return false;
let niePrefix = nie.charAt(0).toUpperCase();
if (niePrefix === 'X') {
niePrefix = '0';
} else if (niePrefix === 'Y') {
niePrefix = '1';
} else if (niePrefix === 'Z') {
niePrefix = '2';
}
const nifEquivalent = niePrefix + nie.substr(1);
return validateNIF(nifEquivalent);
}
// validación pasaporte (10 caracteres)
function validatePasaporte(pasaporte) {
const pasaportePattern = /^[a-z0-9]{10}$/i;
return pasaportePattern.test(pasaporte);
}
// Función que añade +34 en focus y quita +34 en blur si está vacío
function handleFocus(event) {
if (event.target.value === '') {
var bandera = event.target.parentElement.querySelector('.iti__flag-container .iti__selected-flag');
var titleText = bandera.getAttribute('title');
var prefix = titleText.match(/:\s(\+\d+)/)[1];
event.target.value = prefix;
var inputElement = event.target;
inputElement.classList.remove('error');
removeError(inputElement);
}
}
function handleBlur(event) {
if (/^\+\d{0,3}$/.test(event.target.value) || /^.{0,3}$/.test(event.target.value)) {
event.target.value = '';
var inputElement = event.target;
inputElement.classList.remove('error');
removeError(inputElement);
}
}
// añade un mensaje de error
function showError(inputElement, errorMessage) {
let description = inputElement.nextElementSibling;
if (inputElement.id.startsWith('edit-telefono-movil') || inputElement.id.startsWith('edit-telefono-fijo')) {
description = inputElement.parentElement.nextElementSibling;
}
if (!description || !description.classList.contains('description-error')) {
description = document.createElement('div');
description.classList.add('description-error');
if (inputElement.id.startsWith('edit-telefono-movil') || inputElement.id.startsWith('edit-telefono-fijo')) {
inputElement.parentElement.parentNode.insertBefore(description, inputElement.parentElement.nextElementSibling);
} else {
inputElement.parentNode.insertBefore(description, inputElement.nextSibling);
}
}
description.innerHTML = errorMessage;
// Añadir la clase 'd-none' al hermano con clase 'description'
const siblingDescription = inputElement.parentElement.querySelector('.description');
if (siblingDescription) {
siblingDescription.classList.add('d-none');
}
}
// remueve el mensaje de error
function removeError(inputElement) {
let description = inputElement.nextElementSibling;
if (inputElement.id.startsWith('edit-telefono-movil') || inputElement.id.startsWith('edit-telefono-fijo')) {
description = inputElement.parentElement.nextElementSibling;
}
if (description && description.classList.contains('description-error')) {
description.parentNode.removeChild(description);
}
const siblingDescription = inputElement.parentElement.querySelector('.description');
if (siblingDescription) {
siblingDescription.classList.remove('d-none');
}
}
// cierra el modal para que no se abra en los siguientes steps
function cerrarModal() {
const modal = document.querySelector('#js-modal-page-show-modal.show');
if (modal) {
const modalButton = modal.querySelector('button.js-modal-page-ok-button');
const modalBackdrop = document.querySelector('.modal-backdrop');
const body = document.querySelector('body.modal-open');
if (modalBackdrop) {
modalBackdrop.classList.remove('modal-backdrop', 'fade');
}
modal.style.display = "none";
modal.classList.remove('show');
if (body) {
body.style.overflow = "";
body.style.paddingRight = "";
body.classList.remove('modal-open');
}
if (modalButton) {
modalButton.click();
setTimeout(() => {
modalButton.click();
}, 2);
}
}
}
// agregar el evento a la x del modal de apertura automatica
function removeBackdropOnButtonClick() {
const modalButton = document.querySelector('#js-modal-page-show-modal.modal-webform-alert button.js-modal-page-ok-button');
if (modalButton) {
modalButton.addEventListener('click', function () {
modalButton.click();
const backdrop = document.querySelector('.modal-backdrop');
if (backdrop) {
backdrop.classList.remove('modal-backdrop', 'fade');
document.querySelector("body").style.overflow = "";
document.querySelector("body").style.paddingRight = "0";
}
});
}
}
removeBackdropOnButtonClick();
addTextInputFile();
initializeProgress();
}
// función collapsible para el accodeon del input file
function aCollapsible(event) {
event.preventDefault();
const href = event.currentTarget.getAttribute('href').substring(1); // Obtener el href sin el #
const targetElement = document.querySelector(`[id^="${href}"]`);
if (targetElement) {
targetElement.classList.toggle('show');
}
}
/* ------------------------ DATALAYER OTRAS CONSULTAS ------------------------------ */
// Función para recopilar datos del formulario
function collectFormData(form) {
const formElements = form.elements;
const formData = {};
for (let element of formElements) {
if (element.name) {
if (element.tagName.toLowerCase() === 'select') {
// Verificar que haya una opción seleccionada
const selectedOption = element.options[element.selectedIndex];
if (selectedOption) {
formData[element.name] = selectedOption.text;
} else {
formData[element.name] = '';
}
} else {
formData[element.name] = element.value;
}
}
}
return formData;
}
// Función para actualizar datos del formulario
function updateFormData(existingData, newData) {
return { ...existingData, ...newData };
}
// Función para inicializar el objeto dataLayer con valores por defecto
function initializeDataLayer() {
return {
process_name: 'form_otras_consultas',
process_type: 'formulario',
process_step: 'step0 - Inicio proceso',
process_status: 'null',
process_selected: 'page_view',
error_name: 'null',
error_description: 'null',
process_option_1: 'null',
process_option_2: 'null',
};
}
// Función para enviar datos al dataLayer
function sendDataToDataLayer(data) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'formulario',
dimensions: data
});
}
// Función de envio de datos al datalayer
Drupal.behaviors.webFormTracker = {
attached: false,
lastStep: null,
confirmationShown: false,
formData: {},
attach: function (context) {
let dataLayerObj = initializeDataLayer();
const formWrapper = context.querySelector('.form-wrapper[data-webform-key]'); // Envoltorio de Formulario
const confirmation = context.querySelector('.webform-confirmation'); // Confirmación de formulario enviado
const btnSubmit = context.querySelector('input.webform-button--submit');
const btnNext = context.querySelector('input.webform-button--next');
const btnPrev = context.querySelector('input.webform-button--previous');
if (btnNext && !btnNext.dataset.listenerAttached) {
btnNext.dataset.listenerAttached = true; // Evita adjuntar el listener más de una vez
const form = formWrapper.closest('form');
btnNext.addEventListener("click", (event) => {
event.preventDefault();
this.formData = updateFormData(this.formData, collectFormData(form));
const step = formWrapper.getAttribute('data-webform-key');
if (step === 'paso_1' && this.lastStep !== step) {
if (!form.checkValidity()) {
let dataLayerObj = initializeDataLayer();
var numStep = step.replace(/[^\d]/g, '');
dataLayerObj.process_step = 'step' + numStep + ' - Motivo de consulta';
dataLayerObj.process_selected = 'continuar';
dataLayerObj.process_status = 'KO';
if (this.formData.tema) {
dataLayerObj.process_option_1 = this.formData.tema;
}
sendDataToDataLayer(dataLayerObj);
} else {
this.lastStep = step;
let dataLayerObj = initializeDataLayer();
var numStep = step.replace(/[^\d]/g, '');
dataLayerObj.process_step = 'step' + numStep + ' - Motivo de consulta';
dataLayerObj.process_selected = 'continuar';
dataLayerObj.process_status = 'OK';
if (this.formData.tema) {
dataLayerObj.process_option_1 = this.formData.tema;
}
sendDataToDataLayer(dataLayerObj);
}
}
});
}
if (btnSubmit && !btnSubmit.dataset.listenerAttached) {
btnSubmit.dataset.listenerAttached = true; // Evita adjuntar el listener más de una vez
const form = formWrapper.closest('form');
btnSubmit.addEventListener("click", async (event) => {
event.preventDefault();
this.formData = updateFormData(this.formData, collectFormData(form));
const step = formWrapper.getAttribute('data-webform-key');
if (step === 'paso_2') {
let error = form.querySelector('.form__input.error');
if (!form.checkValidity() || error) {
dataLayerObj = initializeDataLayer();
var numStep = step.replace(/[^\d]/g, '');
dataLayerObj.process_step = 'step' + numStep + ' - Tus datos';
dataLayerObj.process_status = 'KO';
dataLayerObj.process_selected = 'enviar';
if (this.formData.tema) {
localStorage.setItem('formTema', this.formData.tema);
dataLayerObj.process_option_1 = this.formData.tema;
}
sendDataToDataLayer(dataLayerObj);
} else {
dataLayerObj = initializeDataLayer();
var numStep = step.replace(/[^\d]/g, '');
dataLayerObj.process_step = 'step' + numStep + ' - Tus datos';
dataLayerObj.process_status = 'OK';
dataLayerObj.process_selected = 'enviar';
if (this.formData.tema) {
localStorage.setItem('formTema', this.formData.tema);
dataLayerObj.process_option_1 = this.formData.tema;
}
sendDataToDataLayer(dataLayerObj);
}
}
});
}
// Inicializar dataLayer al cargar el formulario
if (!this.attached && formWrapper) {
this.attached = true;
dataLayerObj = initializeDataLayer();
dataLayerObj.process_step = 'step0 - Inicio proceso';
sendDataToDataLayer(dataLayerObj);
}
// Envia información al cargar el step 2
if (formWrapper) {
const step = formWrapper.getAttribute('data-webform-key');
if (step === 'paso_2' && this.lastStep !== step) {
this.lastStep = step;
let dataLayerObj = initializeDataLayer();
var numStep = step.replace(/[^\d]/g, '');
dataLayerObj.process_step = 'step' + numStep + ' - Tus datos';
if (this.formData.tema) {
dataLayerObj.process_option_1 = this.formData.tema;
}
sendDataToDataLayer(dataLayerObj);
}
} else if (confirmation && !this.confirmationShown) {
this.confirmationShown = true;
dataLayerObj = initializeDataLayer();
dataLayerObj.process_step = 'stepN - Proceso OK';
dataLayerObj.process_status = 'OK';
dataLayerObj.process_selected = 'page_view';
const savedTema = localStorage.getItem('formTema'); // Recuperar de localStorage
if (savedTema) {
dataLayerObj.process_option_1 = savedTema;
}
sendDataToDataLayer(dataLayerObj);
}
}
};