loader.js 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. // --- Loader Global ---
  2. let globalLoaderElement = null;
  3. function createGlobalLoader() {
  4. if (document.getElementById('globalLoader')) return;
  5. globalLoaderElement = document.createElement('div');
  6. globalLoaderElement.id = 'globalLoader';
  7. globalLoaderElement.className = 'fixed inset-0 bg-black bg-opacity-80 flex flex-col items-center justify-center z-[2000] transition-opacity duration-300 ease-in-out pointer-events-none';
  8. globalLoaderElement.style.opacity = '0';
  9. globalLoaderElement.innerHTML = `
  10. <div style="border: 6px solid rgba(255, 255, 255, 0.2); border-radius: 50%; border-top: 6px solidrgb(172, 85, 85); width: 60px; height: 60px; animation: spin 1s linear infinite;"></div>
  11. <p class="text-white text-xl mt-4">Procesando su pedido...</p>
  12. `;
  13. document.body.appendChild(globalLoaderElement);
  14. }
  15. function showGlobalLoader(message = "Procesando su pedido...") {
  16. if (!globalLoaderElement) createGlobalLoader();
  17. globalLoaderElement.style.display = 'flex';
  18. globalLoaderElement.querySelector("p").textContent = message;
  19. setTimeout(() => { if (globalLoaderElement) globalLoaderElement.style.opacity = '1'; }, 10);
  20. }
  21. function hideGlobalLoader() {
  22. if (globalLoaderElement) {
  23. globalLoaderElement.style.opacity = '0';
  24. setTimeout(() => { if (globalLoaderElement) globalLoaderElement.style.display = 'none'; }, 300);
  25. }
  26. }
  27. export { createGlobalLoader, showGlobalLoader, hideGlobalLoader };