static/js/page/dokka-template/feedback.js (75 lines of code) (raw):
function closePopup() {
document.querySelector('.app-feedback-popup').classList.add('app-feedback-popup_close');
}
function showThanks() {
document.querySelector('.feedback__block--active').classList.remove('feedback__block--active');
document.querySelector('[data-test="feedback-left"]').classList.add('feedback__block--active');
}
function toggleEmail(val) {
const email = document.querySelector('[data-test-id="feedback-email"]');
email.setAttribute('aria-invalid', String(!val));
const classes = email.parentNode.parentNode.parentNode.parentNode.classList;
classes.toggle('_error_1fowpgw_83', !val);
classes.toggle('input_error', !val);
}
function toggleSubmit(val) {
const submit = document.querySelector('[data-test="feedback-send"]');
submit.toggleAttribute('disabled', !val);
const classes = submit.classList;
classes.toggle('_disabled_joawza_61', !val);
classes.toggle('button_disabled', !val);
}
export function initFeedback() {
const feedback = document.querySelector('.feedback');
if (feedback) {
feedback.querySelector('[data-test="feedback-yes"]').addEventListener('click', function(e) {
e.preventDefault();
closePopup();
showThanks();
});
feedback.querySelector('[data-test="feedback-no"]').addEventListener('click', function(e) {
e.preventDefault();
document.querySelector('.app-feedback-popup').classList.remove('app-feedback-popup_close');
});
}
const form = document.querySelector('.app-feedback-popup form');
if (form) {
const fields = form.elements;
form.querySelector('[data-test="feedback-close"]').addEventListener('click', function(e) {
e.preventDefault();
closePopup();
});
form.addEventListener('input', function() {
const emailValid = fields.email.value === '' || fields.email.validity.valid;
toggleEmail(emailValid);
toggleSubmit(fields.content.value !== '' && emailValid);
});
form.addEventListener('submit', function(e) {
e.preventDefault();
const content= document.getElementById('content');
const articleId = content && content.getAttribute('pageids');
const titleNode = document.querySelector('h1.cover');
const title = titleNode && titleNode.textContent;
window.fetch('https://forms-service.jetbrains.com/feedback', {
method: 'POST',
mode: 'cors',
credentials: 'omit',
headers: {
'content-type': 'application/json',
},
body: JSON.stringify({
content: fields.content.value || '',
name: fields.name.value || '',
email: fields.email.value || '',
url: document.location.href || '',
articleId: articleId || 'core-api',
title: title || 'Core API: Untitled',
privacyConsentType: ["mkt.general.jb-intention"],
formId: 'youtrack-feedback'
})
});
showThanks();
closePopup();
});
}
}