improve(ui): dialog: add escape key on shared dialog + perfer hidden class

This commit is contained in:
Edouard Vanbelle
2026-04-24 23:07:04 +02:00
parent 24967489e1
commit 832c9ab577
3 changed files with 31 additions and 23 deletions
+5 -5
View File
@@ -27,7 +27,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: var(--color-overlay-light); background-color: var(--color-overlay-light);
display: none; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
z-index: 3000; z-index: 3000;
@@ -106,7 +106,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: var(--color-overlay-light); background-color: var(--color-overlay-light);
display: none; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
z-index: 3000; z-index: 3000;
@@ -205,7 +205,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: var(--color-overlay-light); background-color: var(--color-overlay-light);
display: none; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
z-index: 3000; z-index: 3000;
@@ -512,7 +512,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: var(--color-overlay-light); background-color: var(--color-overlay-light);
display: none; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
z-index: 4000; z-index: 4000;
@@ -593,7 +593,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: var(--color-overlay); background-color: var(--color-overlay);
display: none; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
z-index: 1000; z-index: 1000;
+13 -5
View File
@@ -111,7 +111,7 @@ const ui = {
// Rename dialog — modern // Rename dialog — modern
if (!document.getElementById('rename-dialog')) { if (!document.getElementById('rename-dialog')) {
const renameDialog = document.createElement('div'); const renameDialog = document.createElement('div');
renameDialog.className = 'rename-dialog'; renameDialog.classList.add('rename-dialog', 'hidden');
renameDialog.id = 'rename-dialog'; renameDialog.id = 'rename-dialog';
renameDialog.innerHTML = ` renameDialog.innerHTML = `
<div class="rename-dialog-content"> <div class="rename-dialog-content">
@@ -134,7 +134,7 @@ const ui = {
// Move dialog — modern with navigation // Move dialog — modern with navigation
if (!document.getElementById('move-file-dialog')) { if (!document.getElementById('move-file-dialog')) {
const moveDialog = document.createElement('div'); const moveDialog = document.createElement('div');
moveDialog.className = 'rename-dialog'; moveDialog.classList.add('rename-dialog', 'hidden');
moveDialog.id = 'move-file-dialog'; moveDialog.id = 'move-file-dialog';
moveDialog.innerHTML = ` moveDialog.innerHTML = `
<div class="rename-dialog-content"> <div class="rename-dialog-content">
@@ -161,7 +161,7 @@ const ui = {
// Share dialog // Share dialog
if (!document.getElementById('share-dialog')) { if (!document.getElementById('share-dialog')) {
const shareDialog = document.createElement('div'); const shareDialog = document.createElement('div');
shareDialog.className = 'share-dialog'; shareDialog.classList.add('share-dialog', 'hidden');
shareDialog.id = 'share-dialog'; shareDialog.id = 'share-dialog';
shareDialog.innerHTML = ` shareDialog.innerHTML = `
<div class="share-dialog-content"> <div class="share-dialog-content">
@@ -252,12 +252,20 @@ const ui = {
const shareUrl = document.getElementById('generated-share-url').value; const shareUrl = document.getElementById('generated-share-url').value;
contextMenus.showEmailNotificationDialog(shareUrl); contextMenus.showEmailNotificationDialog(shareUrl);
}); });
// FIXME make generic function (close all dialog / etc)
document.addEventListener('keydown', (e) => {
const dialog = document.getElementById('share-dialog');
if (e.key === 'Escape' && !dialog?.classList.contains('hidden')) {
contextMenus.closeShareDialog();
}
});
} }
// Notification dialog // Notification dialog
if (!document.getElementById('notification-dialog')) { if (!document.getElementById('notification-dialog')) {
const notificationDialog = document.createElement('div'); const notificationDialog = document.createElement('div');
notificationDialog.className = 'share-dialog'; notificationDialog.classList.add('share-dialog', 'hidden');
notificationDialog.id = 'notification-dialog'; notificationDialog.id = 'notification-dialog';
notificationDialog.innerHTML = ` notificationDialog.innerHTML = `
<div class="share-dialog-content"> <div class="share-dialog-content">
@@ -299,7 +307,7 @@ const ui = {
// Playlist selection dialog // Playlist selection dialog
if (!document.getElementById('playlist-dialog')) { if (!document.getElementById('playlist-dialog')) {
const playlistDialog = document.createElement('div'); const playlistDialog = document.createElement('div');
playlistDialog.className = 'share-dialog'; playlistDialog.classList.add('share-dialog', 'hidden');
playlistDialog.id = 'playlist-dialog'; playlistDialog.id = 'playlist-dialog';
playlistDialog.innerHTML = ` playlistDialog.innerHTML = `
<div class="share-dialog-content"> <div class="share-dialog-content">
+13 -13
View File
@@ -294,7 +294,7 @@ const contextMenus = {
// Each handler checks its own state, so multiple dialogs can be closed with multiple Escape presses // Each handler checks its own state, so multiple dialogs can be closed with multiple Escape presses
if (!_moveDialogEscapeHandler) { if (!_moveDialogEscapeHandler) {
_moveDialogEscapeHandler = (e) => { _moveDialogEscapeHandler = (e) => {
if (e.key === 'Escape' && moveFileDialog.style.display === 'flex') { if (e.key === 'Escape' && !moveFileDialog?.classList.contains('hidden')) {
this.closeMoveDialog(); this.closeMoveDialog();
} }
}; };
@@ -383,7 +383,7 @@ const contextMenus = {
// Update header text // Update header text
const headerSpan = renameDialog.querySelector('.rename-dialog-header span'); const headerSpan = renameDialog.querySelector('.rename-dialog-header span');
if (headerSpan) headerSpan.textContent = i18n ? i18n.t('dialogs.rename_folder') : 'Rename folder'; if (headerSpan) headerSpan.textContent = i18n ? i18n.t('dialogs.rename_folder') : 'Rename folder';
renameDialog.style.display = 'flex'; renameDialog?.classList.remove('hidden');
renameInput.focus(); renameInput.focus();
renameInput.select(); renameInput.select();
}, },
@@ -403,7 +403,7 @@ const contextMenus = {
// Update header text // Update header text
const headerSpan = renameDialog.querySelector('.rename-dialog-header span'); const headerSpan = renameDialog.querySelector('.rename-dialog-header span');
if (headerSpan) headerSpan.textContent = i18n ? i18n.t('dialogs.rename_file') : 'Rename file'; if (headerSpan) headerSpan.textContent = i18n ? i18n.t('dialogs.rename_file') : 'Rename file';
renameDialog.style.display = 'flex'; renameDialog?.classList.remove('hidden');
renameInput.focus(); renameInput.focus();
renameInput.select(); renameInput.select();
}, },
@@ -412,7 +412,7 @@ const contextMenus = {
* Close rename dialog * Close rename dialog
*/ */
closeRenameDialog() { closeRenameDialog() {
document.getElementById('rename-dialog').style.display = 'none'; document.getElementById('rename-dialog')?.classList.add('hidden');
app.contextMenuTargetFolder = null; app.contextMenuTargetFolder = null;
app.renameTarget = null; app.renameTarget = null;
}, },
@@ -478,14 +478,14 @@ const contextMenus = {
await this.loadMoveDialogFolders(startFolderId); await this.loadMoveDialogFolders(startFolderId);
// Show dialog // Show dialog
document.getElementById('move-file-dialog').style.display = 'flex'; document.getElementById('move-file-dialog')?.classList.remove('hidden');
}, },
/** /**
* Close move dialog * Close move dialog
*/ */
closeMoveDialog() { closeMoveDialog() {
document.getElementById('move-file-dialog').style.display = 'none'; document.getElementById('move-file-dialog')?.classList.add('hidden');
app.contextMenuTargetFile = null; app.contextMenuTargetFile = null;
app.contextMenuTargetFolder = null; app.contextMenuTargetFolder = null;
}, },
@@ -924,7 +924,7 @@ const contextMenus = {
if (newShareSection) newShareSection.classList.add('hidden'); if (newShareSection) newShareSection.classList.add('hidden');
// Show dialog // Show dialog
shareDialog.style.display = 'flex'; shareDialog.classList.remove('hidden');
console.log('Share dialog opened for', itemType, item.name); console.log('Share dialog opened for', itemType, item.name);
} catch (error) { } catch (error) {
console.error('Error opening share dialog:', error); console.error('Error opening share dialog:', error);
@@ -1021,7 +1021,7 @@ const contextMenus = {
app.notificationShareUrl = shareUrl; app.notificationShareUrl = shareUrl;
// Show dialog // Show dialog
document.getElementById('notification-dialog').style.display = 'flex'; document.getElementById('notification-dialog')?.classList.remove('hidden');
}, },
/** /**
@@ -1046,7 +1046,7 @@ const contextMenus = {
try { try {
fileSharing.sendShareNotification(shareUrl, email, message); fileSharing.sendShareNotification(shareUrl, email, message);
document.getElementById('notification-dialog').style.display = 'none'; document.getElementById('notification-dialog')?.classList.add('hidden');
} catch (error) { } catch (error) {
console.error('Error sending notification:', error); console.error('Error sending notification:', error);
ui.showNotification('Error', 'Could not send notification'); ui.showNotification('Error', 'Could not send notification');
@@ -1058,7 +1058,7 @@ const contextMenus = {
*/ */
closeShareDialog() { closeShareDialog() {
const dialog = document.getElementById('share-dialog'); const dialog = document.getElementById('share-dialog');
if (dialog) dialog.style.display = 'none'; if (dialog) dialog.classList.add('hidden');
app.shareDialogItem = null; app.shareDialogItem = null;
app.shareDialogItemType = null; app.shareDialogItemType = null;
}, },
@@ -1067,7 +1067,7 @@ const contextMenus = {
* Close notification dialog * Close notification dialog
*/ */
closeNotificationDialog() { closeNotificationDialog() {
document.getElementById('notification-dialog').style.display = 'none'; document.getElementById('notification-dialog')?.classList.add('hidden');
app.notificationShareUrl = null; app.notificationShareUrl = null;
}, },
@@ -1100,7 +1100,7 @@ const contextMenus = {
if (addBtn) addBtn.disabled = true; if (addBtn) addBtn.disabled = true;
// Show dialog // Show dialog
dialog.style.display = 'flex'; dialog.classList.remove('hidden');
requestAnimationFrame(() => dialog.classList.add('active')); requestAnimationFrame(() => dialog.classList.add('active'));
// Load playlists // Load playlists
@@ -1199,7 +1199,7 @@ const contextMenus = {
if (dialog) { if (dialog) {
dialog.classList.remove('active'); dialog.classList.remove('active');
setTimeout(() => { setTimeout(() => {
dialog.style.display = 'none'; dialog.classList.add('hidden');
}, 200); }, 200);
} }
app.playlistDialogFiles = null; app.playlistDialogFiles = null;