- Extract UI components into separate JS files - Centralize configuration values in config.js - Introduce a dedicated logger module - Improve file tree drag-and-drop and undo functionality - Refactor modal handling to a single manager - Add URL routing support for SPA navigation - Implement view mode for read-only access
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
/**
|
|
* UI Utilities Module
|
|
* Toast notifications (kept for backward compatibility)
|
|
*
|
|
* Other utilities have been moved to separate modules:
|
|
* - Context menu: context-menu.js
|
|
* - File upload: file-upload.js
|
|
* - Dark mode: dark-mode.js
|
|
* - Collection selector: collection-selector.js
|
|
* - Editor drop handler: editor-drop-handler.js
|
|
*/
|
|
|
|
/**
|
|
* Show toast notification
|
|
* @param {string} message - The message to display
|
|
* @param {string} type - The notification type (info, success, error, warning, danger, primary)
|
|
*/
|
|
function showNotification(message, type = 'info') {
|
|
const container = document.getElementById('toastContainer') || createToastContainer();
|
|
|
|
const toast = document.createElement('div');
|
|
const bgClass = type === 'error' ? 'danger' : type === 'success' ? 'success' : type === 'warning' ? 'warning' : 'primary';
|
|
toast.className = `toast align-items-center text-white bg-${bgClass} border-0`;
|
|
toast.setAttribute('role', 'alert');
|
|
|
|
toast.innerHTML = `
|
|
<div class="d-flex">
|
|
<div class="toast-body">${message}</div>
|
|
<button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button>
|
|
</div>
|
|
`;
|
|
|
|
container.appendChild(toast);
|
|
|
|
const bsToast = new bootstrap.Toast(toast, { delay: Config.TOAST_DURATION });
|
|
bsToast.show();
|
|
|
|
toast.addEventListener('hidden.bs.toast', () => {
|
|
toast.remove();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Create the toast container if it doesn't exist
|
|
* @returns {HTMLElement} The toast container element
|
|
*/
|
|
function createToastContainer() {
|
|
const container = document.createElement('div');
|
|
container.id = 'toastContainer';
|
|
container.className = 'toast-container position-fixed top-0 end-0 p-3';
|
|
container.style.zIndex = Config.TOAST_Z_INDEX;
|
|
document.body.appendChild(container);
|
|
return container;
|
|
}
|
|
|
|
// All other UI utilities have been moved to separate modules
|
|
// See the module list at the top of this file
|
|
|
|
// Make showNotification globally available
|
|
window.showNotification = showNotification;
|