You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.0 KiB
97 lines
3.0 KiB
import {
|
|
modalCancelBtn,
|
|
modalContainer,
|
|
modalOverlay,
|
|
modalContent,
|
|
modalText,
|
|
modalOkBtn,
|
|
modalProgressContainer,
|
|
modalProgressBar,
|
|
modalProgressText,
|
|
} from "./dom.js";
|
|
|
|
let modalResolve = null;
|
|
|
|
// The showModal function is now simpler.
|
|
/* export function showModal(message, isConfirm = false) {
|
|
return new Promise((resolve) => {
|
|
modalText.textContent = message;
|
|
modalCancelBtn.classList.toggle("hidden");
|
|
modalOkBtn.classList.toggle("hidden", isConfirm);
|
|
modalProgressContainer.classList.add("hidden"); // Hide progress by default
|
|
|
|
modalContainer.classList.remove("hidden");
|
|
setTimeout(() => {
|
|
modalOverlay.classList.remove("opacity-0");
|
|
modalContent.classList.remove("scale-95");
|
|
}, 10);
|
|
modalResolve = resolve;
|
|
});
|
|
} */
|
|
|
|
|
|
|
|
export function showModal(message, isConfirm = false) {
|
|
return new Promise((resolve) => {
|
|
modalText.textContent = message;
|
|
// This line correctly shows the "Cancel" button only when needed.
|
|
modalCancelBtn.classList.toggle("hidden", !isConfirm);
|
|
|
|
// --- THIS IS THE FIX ---
|
|
// This ensures the "OK" button is always visible for this modal.
|
|
modalOkBtn.classList.remove("hidden");
|
|
|
|
modalProgressContainer.classList.add("hidden");
|
|
|
|
modalContainer.classList.remove("hidden");
|
|
setTimeout(() => {
|
|
modalOverlay.classList.remove("opacity-0");
|
|
modalContent.classList.remove("scale-95");
|
|
}, 10);
|
|
modalResolve = resolve;
|
|
});
|
|
}
|
|
// A new function specifically for the loading modal
|
|
export function showLoadingModal(message) {
|
|
modalText.textContent = message;
|
|
modalOkBtn.classList.add('hidden');
|
|
modalCancelBtn.classList.add('hidden');
|
|
modalProgressContainer.classList.remove('hidden');
|
|
modalProgressBar.style.width = '0%';
|
|
modalProgressText.textContent = 'Initializing...';
|
|
|
|
modalContainer.classList.remove("hidden");
|
|
setTimeout(() => {
|
|
modalOverlay.classList.remove("opacity-0");
|
|
modalContent.classList.remove("scale-95");
|
|
}, 10);
|
|
}
|
|
|
|
// A new function to update the progress bar and text
|
|
export function updateLoadingModal(percent, message) {
|
|
if (modalProgressBar && modalProgressText) {
|
|
const p = Math.max(0, Math.min(100, Math.round(percent))); // Clamp between 0-100
|
|
modalProgressBar.style.width = `${p}%`;
|
|
modalProgressText.textContent = message;
|
|
}
|
|
}
|
|
|
|
// The hideModal function now also resets the progress bar
|
|
export function hideModal(value) {
|
|
modalOverlay.classList.add("opacity-0");
|
|
modalContent.classList.add("scale-95");
|
|
setTimeout(() => {
|
|
modalContainer.classList.add("hidden");
|
|
if (modalProgressContainer && modalProgressBar && modalProgressText) {
|
|
modalProgressContainer.classList.add("hidden");
|
|
modalProgressBar.style.width = "0%";
|
|
modalProgressText.textContent = "";
|
|
}
|
|
if (modalResolve) modalResolve(value);
|
|
}, 200);
|
|
}
|
|
|
|
// Event listeners remain the same
|
|
modalOkBtn.addEventListener("click", () => hideModal(true));
|
|
modalCancelBtn.addEventListener("click", () => hideModal(false));
|
|
modalOverlay.addEventListener("click", () => hideModal(false));
|