improve(ui): dialog: add escape key on shared dialog + perfer hidden class
This commit is contained in:
@@ -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
@@ -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">
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user