VulpesOS/gaia/apps/settings/js/panels/feedback_send/panel.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

62 lines
2 KiB
JavaScript
Executable file

define(function(require) {
'use strict';
var SettingsPanel = require('modules/settings_panel');
var SendFeedback = require('panels/feedback_send/feedback_send');
return function ctor_sendFeedbackPanel() {
var elements = {};
var sendFeedback = SendFeedback();
var eventMapping = [
{ elementName: 'sendBtn', eventType: 'click', methodName: 'send' },
{ elementName: 'emailEnable', eventType: 'change',
methodName: 'enableEmail' },
{ elementName: 'header', eventType: 'action', methodName: 'back' }
];
function bindEvents(elements) {
eventMapping.forEach(function(map) {
map.method = sendFeedback[map.methodName].bind(sendFeedback);
elements[map.elementName].addEventListener(map.eventType,
map.method);
});
}
function unbindEvents(elements) {
eventMapping.forEach(function(map) {
if (!map.method) {
return;
}
elements[map.elementName].removeEventListener(map.eventType,
map.method);
});
}
return SettingsPanel({
onInit: function(panel) {
elements = {
title: panel.querySelector('#feedback-title'),
description: panel.querySelector('#feedback-description'),
emailInput: panel.querySelector('#feedback-email'),
emailColumn: panel.querySelector('#feedback-emailbar'),
emailEnable: panel.querySelector('#email-enable'),
sendBtn: panel.querySelector('#feedback-send-btn'),
header: panel.querySelector('#feedback-header')
};
sendFeedback.init(elements);
},
onBeforeShow: function(panel, options) {
bindEvents(elements);
sendFeedback.options = options;
sendFeedback.updateTitle();
sendFeedback.getPreviousInputs();
},
onBeforeHide: function() {
unbindEvents(elements);
if (document.hidden) {
sendFeedback.keepAllInputs();
}
}
});
};
});