<script>
(function() {
const CONFIG = {
TEST_MODE: false,
FIELD_MAP: {
"name": "name",
"mail": "mail"
}
};
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('click', function(e) {
const btn = e.target.closest('.product-form .t-submit');
if (!btn) return;
btn.classList.add('cart-process');
const sourceForm = e.target.closest('.product-form');
const cartBlock = document.querySelector('div[data-record-type="706"]');
if (cartBlock && !CONFIG.TEST_MODE) {
cartBlock.style.opacity = '0';
}
setTimeout(() => {
const cartWin = document.querySelector('.t706__cartwin');
if (!cartWin || !cartWin.classList.contains('t706__cartwin_showed')) {
btn.classList.remove('cart-process');
if (cartBlock && !CONFIG.TEST_MODE) cartBlock.style.opacity = '1';
return;
}
const cartForm = cartWin.querySelector('form');
if (!cartForm) {
btn.classList.remove('cart-process');
return;
}
const fallbackTimer = setTimeout(() => {
btn.classList.remove('cart-process');
}, 8000);
const successObserver = new MutationObserver(() => {
if (cartForm.classList.contains('js-send-form-success')) {
btn.classList.remove('cart-process');
clearTimeout(fallbackTimer);
successObserver.disconnect();
}
});
successObserver.observe(cartForm, { attributes: true, attributeFilter: ['class'] });
for (const [srcName, dstName] of Object.entries(CONFIG.FIELD_MAP)) {
const src = sourceForm.querySelector(`[name="${srcName}"]`);
const dst = cartForm.querySelector(`[name="${dstName}"]`);
if (src && dst) {
dst.value = src.value;
['input', 'change', 'blur'].forEach(evt => {
dst.dispatchEvent(new Event(evt, { bubbles: true, cancelable: true }));
});
}
}
if (!CONFIG.TEST_MODE) {
setTimeout(() => {
const cartSubmit = cartWin.querySelector('.t-submit');
if (cartSubmit) cartSubmit.click();
}, 300);
}
setTimeout(() => {
const currentForm = document.querySelector('.t706__cartwin form');
if (!currentForm) return;
const hasError = currentForm.querySelector('.js-error-control-box') ||
currentForm.classList.contains('js-send-form-error');
if (hasError) {
btn.classList.remove('cart-process');
clearTimeout(fallbackTimer);
successObserver.disconnect();
if (cartBlock && !CONFIG.TEST_MODE) cartBlock.style.opacity = '1';
}
}, 1000);
}, 500);
}, { capture: true });
});
})();
</script>
<style>
.product-form .t-input-group_fr {
display: none;
}
button.t-submit.cart-process {
background-image: url(https://tilda.ru/tpl/img/ajax-loader.gif);
background-size: 15px;
background-position: center;
background-repeat: no-repeat;
color: transparent !important;
}
</style>