Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
85 lines
2 KiB
JavaScript
Executable file
85 lines
2 KiB
JavaScript
Executable file
/* exported ActionMenu */
|
|
'use strict';
|
|
|
|
function ActionMenu(title) {
|
|
var data;
|
|
var contactActionMenu;
|
|
var listContainer;
|
|
var btnCancel;
|
|
var titleId = title;
|
|
|
|
function init() {
|
|
contactActionMenu = document.getElementById('action-menu');
|
|
// Prevent submit in the form
|
|
contactActionMenu.addEventListener('submit', function(evt) {
|
|
evt.preventDefault();
|
|
});
|
|
|
|
if (titleId) {
|
|
contactActionMenu.querySelector('#org-title').setAttribute(
|
|
'data-l10n-id', titleId);
|
|
}
|
|
listContainer = document.getElementById('value-menu');
|
|
|
|
data = {
|
|
list: []
|
|
};
|
|
}
|
|
|
|
this.show = function() {
|
|
render(this);
|
|
contactActionMenu.classList.remove('hide');
|
|
};
|
|
|
|
this.hide = function() {
|
|
contactActionMenu.classList.add('hide');
|
|
emptyList();
|
|
listContainer.innerHTML = '';
|
|
};
|
|
|
|
function render(self) {
|
|
for (var i = 0, l = data.list.length; i < l; i++) {
|
|
var button = document.createElement('button');
|
|
navigator.mozL10n.setAttributes(button,
|
|
data.list[i].labelL10n.id,
|
|
data.list[i].labelL10n.args);
|
|
|
|
// Set callback function on each button element.
|
|
var callback = data.list[i].callback;
|
|
if (callback) {
|
|
button.addEventListener('click', callback, false);
|
|
}
|
|
|
|
listContainer.appendChild(button);
|
|
}
|
|
|
|
btnCancel = document.createElement('button');
|
|
btnCancel.setAttribute('data-l10n-id', 'cancel');
|
|
|
|
btnCancel.addEventListener('click', function() {
|
|
self.hide();
|
|
});
|
|
|
|
var lastButtonWrapper = document.createElement('span');
|
|
lastButtonWrapper.className = 'last-button-container';
|
|
listContainer.appendChild(lastButtonWrapper);
|
|
lastButtonWrapper.appendChild(btnCancel);
|
|
}
|
|
|
|
function emptyList() {
|
|
data.list = [];
|
|
}
|
|
|
|
this.addToList = function (labelL10n, callback) {
|
|
var self = this;
|
|
data.list.push({
|
|
labelL10n: labelL10n,
|
|
callback: function() {
|
|
callback();
|
|
self.hide();
|
|
}
|
|
});
|
|
};
|
|
|
|
init();
|
|
}
|