/* MIPIEL Taller — selector del muestreador */ (function () { 'use strict'; document.addEventListener('DOMContentLoaded', function () { var raiz = document.querySelector('[data-mt-muestreador]'); if (!raiz) { return; } var cfg = window.mipielMuestreador || {}; var formato = new Intl.NumberFormat('es-MX', { style: 'currency', currency: 'MXN', maximumFractionDigits: 0 }); var checks = Array.prototype.slice.call(raiz.querySelectorAll('input[name="mt_muestras[]"]')); var contador = raiz.querySelector('[data-mt-contador]'); var contadorEx = raiz.querySelector('[data-mt-contador-exoticas]'); var boton = raiz.querySelector('[data-mt-muestreador-agregar]'); var error = raiz.querySelector('[data-mt-muestreador-error]'); function estado() { var elegidas = checks.filter(function (c) { return c.checked; }); var exoticas = elegidas.filter(function (c) { return c.getAttribute('data-exotica') === '1'; }); return { elegidas: elegidas, exoticas: exoticas }; } function pintar() { var e = estado(); contador.textContent = e.elegidas.length + ' de ' + cfg.maxMuestras + ' muestras elegidas'; contadorEx.textContent = e.exoticas.length + ' de ' + cfg.maxExoticas + ' exóticas'; boton.disabled = e.elegidas.length === 0; error.textContent = ''; } checks.forEach(function (c) { c.addEventListener('change', function () { var e = estado(); if (e.elegidas.length > cfg.maxMuestras) { c.checked = false; error.textContent = 'Máximo ' + cfg.maxMuestras + ' muestras por pedido.'; pintar(); return; } if (e.exoticas.length > cfg.maxExoticas) { c.checked = false; error.textContent = 'Máximo ' + cfg.maxExoticas + ' pieles exóticas por pedido: cambia una por una básica.'; pintar(); return; } pintar(); }); }); pintar(); boton.addEventListener('click', function () { var e = estado(); if (!e.elegidas.length) { return; } boton.disabled = true; boton.textContent = 'Agregando…'; error.textContent = ''; var datos = new FormData(); datos.append('action', 'mipiel_agregar_muestreador'); datos.append('nonce', cfg.nonce); e.elegidas.forEach(function (c) { datos.append('pieles[]', c.value); }); fetch(cfg.ajaxUrl, { method: 'POST', body: datos, credentials: 'same-origin' }) .then(function (r) { return r.json(); }) .then(function (res) { if (!res || !res.success) { error.textContent = (res && res.data && res.data.mensaje) ? res.data.mensaje : 'Algo salió mal.'; boton.disabled = false; boton.textContent = 'Pedir mi muestreador'; return; } boton.textContent = '¡Listo!'; window.location.href = cfg.urlCarrito; }) .catch(function () { error.textContent = 'No pudimos conectar. Inténtalo de nuevo.'; boton.disabled = false; boton.textContent = 'Pedir mi muestreador'; }); }); }); })();