EventBuzz_Backend/microsite-v2-templates/crest-novel/assets/js/feedback-fab.js

82 lines
2.2 KiB
JavaScript

(function () {
'use strict';
var fabEl = null;
function resolveFeedbackUrl(feedback, config) {
if (feedback && feedback.url) {
return feedback.url;
}
var meta = (config && config.meta) || {};
var eventId = meta.eventId;
var formId = feedback && feedback.formId;
var webBase = meta.webBaseUrl || 'https://web.eventbuzz.live';
if (eventId && formId) {
return String(webBase).replace(/\/$/, '') + '/event/' + eventId + '/form/' + formId;
}
return '';
}
function openFeedback(feedback, config) {
var url = resolveFeedbackUrl(feedback, config);
if (!url) {
console.warn('[feedback-fab] No feedback form URL configured.');
return;
}
var target = (feedback && feedback.target) || '_blank';
if (target === 'modal' && window.EventUpRegistrationModal && window.EventUpRegistrationModal.open) {
window.EventUpRegistrationModal.open(url, (feedback && feedback.title) || 'Feedback');
return;
}
window.open(url, '_blank', 'noopener,noreferrer');
}
function init(feedback, config) {
if (!feedback || feedback.show === false) {
if (fabEl) {
fabEl.style.display = 'none';
}
return;
}
if (!fabEl) {
fabEl = document.createElement('button');
fabEl.type = 'button';
fabEl.className = 'eventup-feedback-fab';
fabEl.setAttribute('data-feedback-fab', 'true');
fabEl.innerHTML = '<span class="eventup-feedback-fab__text">Feedback</span>';
document.body.appendChild(fabEl);
}
fabEl.style.display = '';
fabEl.setAttribute('aria-label', feedback.label || feedback.title || 'Feedback');
var label = fabEl.querySelector('.eventup-feedback-fab__text');
if (label) {
label.textContent = feedback.label || 'Feedback';
}
if (fabEl.getAttribute('data-feedback-bound') === 'true') {
return;
}
fabEl.setAttribute('data-feedback-bound', 'true');
fabEl.addEventListener('click', function (event) {
event.preventDefault();
openFeedback(feedback, config);
});
}
window.EventUpFeedbackFab = {
init: init,
open: openFeedback,
resolveUrl: resolveFeedbackUrl
};
})();