import { EMPTY_STRING } from '../constants/constants.js';
import { MelObject } from '../mel_object.js';
export { BnumMessage, eMessageType };
/**
* @class
* @classdesc Contient des fonctions utiles pour afficher des messages sur le bnum
* @static
*/
class BnumMessage {
/**
* @private
*/
constructor() {
throw 'Cannot be instantiate';
}
/**
* @type {rcube_webmail}
* @readonly
*/
static get Rcmail() {
return MelObject.Empty().rcmail();
}
/**
* Affiche un message sur le bnum
* @param {string} message Message à afficher
* @param {eMessageType} type Couleur ou icône lié au message
* @returns {string}
* @static
*/
static DisplayMessage(message, type = eMessageType.Information) {
return this.Rcmail.display_message(message, type);
}
/**
* Affiche un message de chargement sur le Bnum
* @returns {string} Id du message
*/
static DisplayLoadingMessage() {
return this.DisplayMessage('loading', 'loading');
}
/**
* Supprime les messages du bnum
* @returns {typeof BnumMessage} Chaînage
* @static
*/
static ClearMessages() {
this.Rcmail.clear_messages();
return this;
}
/**
* Supprime un message sur le bnum à partir de son id.
* @param {string} id Id du message
* @returns {typeof BnumMessage} Chaînage
* @static
*/
static ClearMessage(id) {
this.Rcmail.hide_message(id);
return this;
}
/**
* Passe le bnum en mode "occupé" et affiche un message de chargement
* @static
*/
static SetBusyLoading() {
if (!this.busy) {
/**
* @type {?string}
*/
this.busy = this.Rcmail.set_busy(true, 'loading');
}
}
/**
* Passe le bnum en mode "libre" et supprime le message de chargement
* @static
*/
static StopBusyLoading() {
if (this.busy) {
this.Rcmail.set_busy(false, 'loading', this.busy);
this.busy = null;
}
}
}
/**
* Type de message
* @enum {string}
* @see {@link BnumMessage.DisplayMessage}
*/
const eMessageType = {
Information: EMPTY_STRING,
Confirmation: 'confirmation',
Error: 'error',
Warning: 'warning',
};