164 lines
5.2 KiB
JavaScript
164 lines
5.2 KiB
JavaScript
/*global libD*/
|
|
|
|
(function (global) {
|
|
"use strict";
|
|
|
|
let divAlert;
|
|
let divAlertInput;
|
|
let divAlertConfirm;
|
|
let divAlertButton;
|
|
let alertButtonOK;
|
|
let divAlertCallback;
|
|
let divAlertCallbackYes;
|
|
let divAlertCallbackNo;
|
|
let alertInput;
|
|
let divAlertContent;
|
|
|
|
const _ = (window.libD && libD.l10n) ? libD.l10n() : function (s) {
|
|
return s;
|
|
};
|
|
|
|
function promptOK() {
|
|
divAlert.style.display = "none";
|
|
if (divAlertCallback) {
|
|
divAlertCallback(alertInput.value);
|
|
}
|
|
}
|
|
|
|
function promptCancel() {
|
|
divAlert.style.display = "none";
|
|
if (divAlertCallback) {
|
|
divAlertCallback(null);
|
|
}
|
|
}
|
|
|
|
function confirmYes() {
|
|
divAlert.style.display = "none";
|
|
if (divAlertCallbackYes) {
|
|
divAlertCallbackYes();
|
|
}
|
|
}
|
|
function confirmNo() {
|
|
divAlert.style.display = "none";
|
|
if (divAlertCallbackNo) {
|
|
divAlertCallbackNo();
|
|
}
|
|
}
|
|
|
|
function alertOK() {
|
|
divAlert.style.display = "none";
|
|
if (divAlertCallback) {
|
|
divAlertCallback();
|
|
}
|
|
}
|
|
|
|
function prepare() {
|
|
divAlert = document.createElement("div");
|
|
divAlert.className = "alert";
|
|
divAlert.style.display = "none";
|
|
|
|
divAlertContent = document.createElement("div");
|
|
divAlertContent.className = "alert-content";
|
|
divAlertContent.style.whiteSpace = "pre-wrap";
|
|
|
|
divAlertInput = document.createElement("div");
|
|
divAlertInput.className = "alert-prompt";
|
|
|
|
alertInput = document.createElement("input");
|
|
alertInput.type = "text";
|
|
alertInput.onkeydown = function (e) {
|
|
if (e.keyCode === 13) {
|
|
e.preventDefault();
|
|
promptOK();
|
|
}
|
|
};
|
|
|
|
divAlertInput.appendChild(alertInput);
|
|
|
|
divAlertInput.appendChild(document.createElement("div"));
|
|
divAlertInput.lastChild.className = "alert-prompt-buttons";
|
|
divAlertInput.lastChild.appendChild(document.createElement("button"));
|
|
divAlertInput.lastChild.lastChild.textContent = _("OK");
|
|
divAlertInput.lastChild.lastChild.onclick = promptOK;
|
|
divAlertInput.lastChild.appendChild(document.createElement("button"));
|
|
divAlertInput.lastChild.lastChild.textContent = _("Annuler");
|
|
divAlertInput.lastChild.lastChild.onclick = promptCancel;
|
|
|
|
divAlertConfirm = document.createElement("div");
|
|
divAlertConfirm.className = _("alert-confirm");
|
|
divAlertConfirm.appendChild(document.createElement("button"));
|
|
divAlertConfirm.lastChild.textContent = _("Oui");
|
|
divAlertConfirm.lastChild.onclick = confirmYes;
|
|
divAlertConfirm.appendChild(document.createElement("button"));
|
|
divAlertConfirm.lastChild.textContent = _("Non");
|
|
divAlertConfirm.lastChild.onclick = confirmNo;
|
|
|
|
divAlertButton = document.createElement("div");
|
|
alertButtonOK = document.createElement("button");
|
|
divAlertButton.appendChild(alertButtonOK);
|
|
alertButtonOK.textContent = _("OK");
|
|
alertButtonOK.onclick = alertOK;
|
|
|
|
const divAlertOuter = document.createElement("div");
|
|
divAlertOuter.className = "alert-outer";
|
|
divAlertOuter.appendChild(divAlertContent);
|
|
divAlertOuter.appendChild(divAlertInput);
|
|
divAlertOuter.appendChild(divAlertConfirm);
|
|
divAlertOuter.appendChild(divAlertButton);
|
|
divAlert.appendChild(divAlertOuter);
|
|
document.body.appendChild(divAlert);
|
|
}
|
|
|
|
global.myAlert = function (msg, callback) {
|
|
if (!divAlert) {
|
|
prepare();
|
|
}
|
|
|
|
divAlertContent.textContent = msg;
|
|
divAlertInput.style.display = "none";
|
|
divAlertConfirm.style.display = "none";
|
|
divAlertButton.style.display = "";
|
|
divAlertCallback = callback;
|
|
divAlert.style.display = "";
|
|
divAlertButton.getElementsByTagName("button")[0].focus();
|
|
};
|
|
|
|
global.myAlert.l10n = _;
|
|
|
|
global.myPrompt = function (msg, callback, defaultText) {
|
|
if (!divAlert) {
|
|
prepare();
|
|
}
|
|
|
|
divAlertContent.textContent = msg;
|
|
divAlertInput.style.display = "";
|
|
divAlertInput.firstChild.value = defaultText || "";
|
|
divAlertConfirm.style.display = "none";
|
|
divAlertButton.style.display = "none";
|
|
divAlertCallback = callback;
|
|
divAlert.style.display = "";
|
|
|
|
// eslint-disable-next-line require-unicode-regexp
|
|
if (!(/iPad|iPhone|iPod/g).test(navigator.userAgent)) {
|
|
alertInput.focus();
|
|
alertInput.setSelectionRange(0, alertInput.value.length);
|
|
alertInput.select();
|
|
}
|
|
};
|
|
|
|
global.myConfirm = function (msg, callbackYes, callbackNo) {
|
|
if (!divAlert) {
|
|
prepare();
|
|
}
|
|
|
|
divAlertContent.textContent = msg;
|
|
divAlertInput.style.display = "none";
|
|
divAlertConfirm.style.display = "";
|
|
divAlertButton.style.display = "none";
|
|
divAlertCallbackYes = callbackYes;
|
|
divAlertCallbackNo = callbackNo;
|
|
divAlert.style.display = "";
|
|
divAlertConfirm.getElementsByTagName("button")[0].focus();
|
|
};
|
|
}(this));
|