pdf.js/web/pdf_save_cfaz_dialog.js
2024-05-06 15:21:46 -03:00

95 lines
2.2 KiB
JavaScript

/**
* @typedef {Object} PDFSaveCfazDialogOptions
* @property {HTMLDialogElement} dialog - The overlay's DOM element.
* @property {Object} message - Message's DOM element.
* @property {HTMLButtonElement} closeButton - Button for closing the overlay.
*/
class PDFSaveCfazDialog {
/**
* @param {PDFSaveCfazDialogOptions} options
* @param {OverlayManager} overlayManager - Manager for the viewer overlays.
* @param {EventBus} eventBus - The application event bus.
* @param {IL10n} l10n - Localization service.
*/
constructor(
{ dialog, message, closeButton },
overlayManager,
l10n,
) {
this.dialog = dialog;
this.message = message;
this.closeButton = closeButton;
this.overlayManager = overlayManager;
this.l10n = l10n;
this.#reset();
// Bind the event listener for the Close button.
this.closeButton.addEventListener("click", this.close.bind(this));
this.overlayManager.register(this.dialog);
}
/**
* Set messageContent to show in overlay
*
* @param {String} messageContent - Message string
*/
setMessageContent(messageContent) {
this.messageContent = messageContent;
this.#updateUI();
}
/**
* Set closeButtonToggle to show in overlay
*
* @param {Boolean} closeButtonToggle - closeButtonToggle Boolean
*/
setCloseButtonToggle(closeButtonToggle) {
this.closeButtonToggle = closeButtonToggle;
this.#updateUI();
}
#reset() {
this.closeButtonToggle = false;
this.messageContent = "Enviando arquivo ...";
}
/**
* Open the document properties overlay.
*/
async open() {
this.#reset();
this.#updateUI();
await Promise.all([
this.overlayManager.open(this.dialog),
]);
}
/**
* Close the document properties overlay.
*/
async close() {
this.overlayManager.close(this.dialog);
}
/**
* Always updates all of the dialog fields, to prevent inconsistent UI state.
*/
#updateUI() {
this.message.textContent = this.messageContent;
if(this.closeButtonToggle){
this.closeButton.parentElement.style = 'display: block'
}
else {
this.closeButton.parentElement.style = 'display: none'
}
}
}
export { PDFSaveCfazDialog };