82 lines
2.2 KiB
JavaScript
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
|
|
};
|
|
})();
|