@drozdik.m/common-dialog-window
Version:
Nice and easy-to-use list of common info dialog windows
378 lines (329 loc) • 15.8 kB
text/typescript
import { DialogWindow } from "@drozdik.m/dialog-window";
//--------------------------------------------------
//----------COMMON DIALOG WINDOW PROPERTIES---------
//--------------------------------------------------
abstract class DialogWindowProperties
{
id: string;
buttonClass: string;
constructor(id: string, buttonClass: string)
{
this.id = id;
this.buttonClass = buttonClass;
}
/**
* Returns generated dialog window HTML
*/
abstract GenerateDialogWindowHTML(): string;
}
class CommonDialogWindowProperties extends DialogWindowProperties
{
GenerateDialogWindowHTML(): string
{
return `<div id="${this.id}" class="commonDialogWindowContent"> \
<p class="dialogWindowHeading"></p> \
<p class="message"></p> \
<div class="commonButtonWrapper"> \
<button class="commonButton ${this.buttonClass} dialogClose"></button> \
</div> \
</div>`;
}
}
class CommonDialogWindowProperties_Green extends CommonDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonGreen")
}
}
class CommonDialogWindowProperties_Yellow extends CommonDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonYellow")
}
}
class CommonDialogWindowProperties_Red extends CommonDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonRed")
}
}
class CommonDialogWindowProperties_Grey extends CommonDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonGrey")
}
}
//--------------------------------------------------
//----------CONFIRMATION DIALOG WINDOW PROPERTIES---
//--------------------------------------------------
class ConfirmationDialogWindowProperties extends DialogWindowProperties
{
cancelButtonClass: string;
constructor(id: string, confirmButtonClass: string, cancelButtonClass: string)
{
super(id, confirmButtonClass);
this.cancelButtonClass = cancelButtonClass;
}
GenerateDialogWindowHTML(): string
{
return `<div id="${this.id}" class="commonDialogWindowContent"> \
<p class="dialogWindowHeading">Potvrzení</p> \
<p class="message"></p> \
<div class="commonButtonWrapper"> \
<button class="commonButton confirmButton ${this.buttonClass} dialogClose">Potvrdit</button> \
<button class="commonButton closeButton ${this.cancelButtonClass} dialogClose">Zrušit</button> \
</div> \
</div>`;
}
}
class ConfirmationDialogWindowProperties_Green extends ConfirmationDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonGreen", "commonButtonGrey");
}
}
class ConfirmationDialogWindowProperties_Yellow extends ConfirmationDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonYellow", "commonButtonGrey");
}
}
class ConfirmationDialogWindowProperties_Red extends ConfirmationDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonRed", "commonButtonGrey");
}
}
class ConfirmationDialogWindowProperties_Grey extends ConfirmationDialogWindowProperties
{
constructor(id: string)
{
super(id, "commonButtonGrey", "commonButtonGrey");
}
}
//--------------------------------------------------
//----------COMMON DIALOG WINDOWS-------------------
//--------------------------------------------------
export class CommonDialogWindow
{
//--------------------------------------------------
//----------VARIABLES-------------------------------
//--------------------------------------------------
//Dialog windows
private static SuccessDialogWindow: DialogWindow = null;
private static WarningDialogWindow: DialogWindow = null;
private static ErrorDialogWindow: DialogWindow = null;
private static InfoDialogWindow: DialogWindow = null;
//Information dialog settings
private static SuccessDialogSettings: CommonDialogWindowProperties = new CommonDialogWindowProperties_Green("dialogSuccess");
private static WarningDialogSettings: CommonDialogWindowProperties = new CommonDialogWindowProperties_Yellow("dialogWarning");
private static ErrorDialogSettings: CommonDialogWindowProperties = new CommonDialogWindowProperties_Red("dialogError");
private static InfoDialogSettings: CommonDialogWindowProperties = new CommonDialogWindowProperties_Grey("dialogInfo");
//Confirmation dialog settings
private static GreenConfirmationDialogWindow: DialogWindow = null;
private static YellowConfirmationDialogWindow: DialogWindow = null;
private static RedConfirmationDialogWindow: DialogWindow = null;
private static GreyConfirmationDialogWindow: DialogWindow = null;
//Confirmation dialog settings
private static GreenConfirmationDialogSettings: ConfirmationDialogWindowProperties = new ConfirmationDialogWindowProperties_Green("dialogGreenConfirmation");
private static YellowConfirmationDialogSettings: ConfirmationDialogWindowProperties = new ConfirmationDialogWindowProperties_Yellow("dialogYellowConfirmation");
private static RedConfirmationDialogSettings: ConfirmationDialogWindowProperties = new ConfirmationDialogWindowProperties_Red("dialogRedConfirmation");
private static GreyConfirmationDialogSettings: ConfirmationDialogWindowProperties = new ConfirmationDialogWindowProperties_Grey("dialogGreyConfirmation");
//--------------------------------------------------
//---------CONSTRUCTOR------------------------------
//--------------------------------------------------
constructor()
{
}
//--------------------------------------------------
//----------METHODS---------------------------------
//--------------------------------------------------
/**
* Handles existance of the dialog window
* @param dialogWindow Dialog window
* @param dialogWindowProperties Dialog window properties
*/
private static HandleDialogWindowExistance(dialogWindow: DialogWindow, dialogWindowProperties: DialogWindowProperties): DialogWindow
{
//Window already exists
if (dialogWindow !== null)
return dialogWindow;
//Append the window
document.body.insertAdjacentHTML("beforeend", dialogWindowProperties.GenerateDialogWindowHTML());
//Create dialog class
return new DialogWindow(dialogWindowProperties.id);
}
//--------------------------------------------------
//----------COMMON DIALOG WINDOWS-------------------
//--------------------------------------------------
/**
* Shows success dialog window
* @param message Message
* @param heading Heading
* @param confirmButton Confirm button text
*/
static Success(message: string, heading: string = "Úspěch", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.SuccessDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.SuccessDialogWindow, CommonDialogWindow.SuccessDialogSettings);
//Change content
CommonDialogWindow.FillCommonDialogWindow(CommonDialogWindow.SuccessDialogSettings.id, message, heading, confirmButton);
//Open dialog window
CommonDialogWindow.SuccessDialogWindow.Open();
}
/**
* Shows warning dialog window
* @param message Message
* @param heading Heading
* @param confirmButton Confirm button text
*/
static Warning(message: string, heading: string = "Varování", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.WarningDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.WarningDialogWindow, CommonDialogWindow.WarningDialogSettings);
//Change content
CommonDialogWindow.FillCommonDialogWindow(CommonDialogWindow.WarningDialogSettings.id, message, heading, confirmButton);
//Open dialog window
CommonDialogWindow.WarningDialogWindow.Open();
}
/**
* Shows error dialog window
* @param message Message
* @param heading Heading
* @param confirmButton Confirm button text
*/
static Error(message: string, heading: string = "Error", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.ErrorDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.ErrorDialogWindow, CommonDialogWindow.ErrorDialogSettings);
//Change content
CommonDialogWindow.FillCommonDialogWindow(CommonDialogWindow.ErrorDialogSettings.id, message, heading, confirmButton);
//Open dialog window
CommonDialogWindow.ErrorDialogWindow.Open();
}
/**
* Shows information dialog window
* @param message Message
* @param heading Heading
* @param confirmButton Confirm button text
*/
static Info(message: string, heading: string = "Informace", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.InfoDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.InfoDialogWindow, CommonDialogWindow.InfoDialogSettings);
//Change content
CommonDialogWindow.FillCommonDialogWindow(CommonDialogWindow.InfoDialogSettings.id, message, heading, confirmButton);
//Open dialog window
CommonDialogWindow.InfoDialogWindow.Open();
}
/**
* Updates common dialog window content
* @param dialogId Dialog window ID
* @param message Message
* @param heading Heading
* @param confirmButton Confirm button text
*/
private static FillCommonDialogWindow(dialogId: string, message: string, heading: string, confirmButton: string)
{
let dialog = document.getElementById(dialogId);
dialog.querySelector(".message").innerHTML = message;
dialog.querySelector(".dialogWindowHeading").innerHTML = heading;
dialog.querySelector(".commonButton").innerHTML = confirmButton;
}
//--------------------------------------------------
//----------CONFIRMATION DIALOG WINDOWS-------------
//--------------------------------------------------
/**
* Pops green confirmation dialog window. If confirmed, confirm action is called
* @param message Message
* @param confirmAction Function called on confirmation
* @param heading Heading
* @param closeButton Close button text
* @param confirmButton Confirm button text
*/
static GreenConfirm(message: string, confirmAction: Function, heading: string = "Potvrzení", closeButton: string = "Zavřít", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.GreenConfirmationDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.GreenConfirmationDialogWindow, CommonDialogWindow.GreenConfirmationDialogSettings);
//Change content
CommonDialogWindow.FillConfirmDialogWindow(CommonDialogWindow.GreenConfirmationDialogSettings.id, confirmAction, message, heading, closeButton, confirmButton);
//Open dialog window
CommonDialogWindow.GreenConfirmationDialogWindow.Open();
}
/**
* Pops yellow confirmation dialog window. If confirmed, confirm action is called
* @param message Message
* @param confirmAction Function called on confirmation
* @param heading Heading
* @param closeButton Close button text
* @param confirmButton Confirm button text
*/
static YellowConfirm(message: string, confirmAction: Function, heading: string = "Potvrzení", closeButton: string = "Zavřít", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.YellowConfirmationDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.YellowConfirmationDialogWindow, CommonDialogWindow.YellowConfirmationDialogSettings);
//Change content
CommonDialogWindow.FillConfirmDialogWindow(CommonDialogWindow.YellowConfirmationDialogSettings.id, confirmAction, message, heading, closeButton, confirmButton);
//Open dialog window
CommonDialogWindow.YellowConfirmationDialogWindow.Open();
}
/**
* Pops red confirmation dialog window. If confirmed, confirm action is called
* @param message Message
* @param confirmAction Function called on confirmation
* @param heading Heading
* @param closeButton Close button text
* @param confirmButton Confirm button text
*/
static RedConfirm(message: string, confirmAction: Function, heading: string = "Potvrzení", closeButton: string = "Zavřít", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.RedConfirmationDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.RedConfirmationDialogWindow, CommonDialogWindow.RedConfirmationDialogSettings);
//Change content
CommonDialogWindow.FillConfirmDialogWindow(CommonDialogWindow.RedConfirmationDialogSettings.id, confirmAction, message, heading, closeButton, confirmButton);
//Open dialog window
CommonDialogWindow.RedConfirmationDialogWindow.Open();
}
/**
* Pops black confirmation dialog window. If confirmed, confirm action is called
* @param message Message
* @param confirmAction Function called on confirmation
* @param heading Heading
* @param closeButton Close button text
* @param confirmButton Confirm button text
*/
static BlackConfirm(message: string, confirmAction: Function, heading: string = "Potvrzení", closeButton: string = "Zavřít", confirmButton: string = "Potvrdit")
{
//Handle dialog window
CommonDialogWindow.GreyConfirmationDialogWindow = CommonDialogWindow.HandleDialogWindowExistance(CommonDialogWindow.GreyConfirmationDialogWindow, CommonDialogWindow.GreyConfirmationDialogSettings);
//Change content
CommonDialogWindow.FillConfirmDialogWindow(CommonDialogWindow.GreyConfirmationDialogSettings.id, confirmAction, message, heading, closeButton, confirmButton);
//Open dialog window
CommonDialogWindow.GreyConfirmationDialogWindow.Open();
}
/**
* Updates confirm dialog window content
* @param dialogId Dialog window ID
* @param message Message
* @param heading Heading
* @param closeButton Close button text
* @param confirmButton Confirm button text
*/
private static FillConfirmDialogWindow(dialogId: string, confirmAction: Function, message: string, heading: string, closeButton: string, confirmButton: string)
{
let dialog = document.getElementById(dialogId);
dialog.querySelector(".message").innerHTML = message;
dialog.querySelector(".dialogWindowHeading").innerHTML = heading;
dialog.querySelector(".closeButton").innerHTML = closeButton;
let confirmButtonEl = dialog.querySelector(".confirmButton");
confirmButtonEl.innerHTML = confirmButton;
(confirmButtonEl as any).onclick = confirmAction;
}
}