Error modal
This commit is contained in:
parent
9f3f5c28be
commit
1946f56b43
@ -26,7 +26,22 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
margin-bottom: 1.5rem;
|
padding: 1rem;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header.error {
|
||||||
|
color: var(--primary-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header.error h2 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header.error i {
|
||||||
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-header h2 {
|
.modal-header h2 {
|
||||||
|
@ -32,6 +32,36 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Error modal functionality
|
||||||
|
const errorModal = document.getElementById('errorModal');
|
||||||
|
const errorModalMessage = document.getElementById('errorModalMessage');
|
||||||
|
const errorModalClose = document.getElementById('errorModalClose');
|
||||||
|
|
||||||
|
function showError(message) {
|
||||||
|
errorModalMessage.textContent = message;
|
||||||
|
errorModal.classList.add('show');
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideError() {
|
||||||
|
errorModal.classList.remove('show');
|
||||||
|
}
|
||||||
|
|
||||||
|
errorModalClose.addEventListener('click', hideError);
|
||||||
|
|
||||||
|
// Close error modal when clicking outside
|
||||||
|
errorModal.addEventListener('click', (e) => {
|
||||||
|
if (e.target === errorModal) {
|
||||||
|
hideError();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Close error modal when pressing escape
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if (e.key === 'Escape' && errorModal.classList.contains('show')) {
|
||||||
|
hideError();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// OPML import handlers
|
// OPML import handlers
|
||||||
opmlFileInput.addEventListener('change', async (e) => {
|
opmlFileInput.addEventListener('change', async (e) => {
|
||||||
if (e.target.files.length > 0) {
|
if (e.target.files.length > 0) {
|
||||||
@ -48,20 +78,20 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
alert('OPML import successful: ' + result.message);
|
showError('OPML import successful: ' + result.message);
|
||||||
// Refresh the feed list if feeds were imported
|
// Refresh the feed list if feeds were imported
|
||||||
if (result.feeds_imported) {
|
if (result.feeds_imported) {
|
||||||
handleFeeds();
|
handleFeeds();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
alert('OPML import failed: ' + result.message);
|
showError('OPML import failed: ' + result.message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
alert('Failed to import OPML file. Please try again.');
|
showError('Failed to import OPML file. Please try again.');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('OPML import failed:', error);
|
console.error('OPML import failed:', error);
|
||||||
alert('Failed to import OPML file. Please try again.');
|
showError('Failed to import OPML file. Please try again.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Clear the input so the same file can be selected again
|
// Clear the input so the same file can be selected again
|
||||||
|
@ -35,6 +35,21 @@
|
|||||||
</article>
|
</article>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
|
<!-- Error Modal -->
|
||||||
|
<dialog class="modal" id="errorModal">
|
||||||
|
<article class="modal-content">
|
||||||
|
<header class="modal-header error">
|
||||||
|
<h2><i class="fas fa-exclamation-circle"></i> Error</h2>
|
||||||
|
</header>
|
||||||
|
<section class="modal-body">
|
||||||
|
<p id="errorModalMessage"></p>
|
||||||
|
</section>
|
||||||
|
<footer class="modal-footer">
|
||||||
|
<button type="button" class="btn-primary" id="errorModalClose">OK</button>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
</dialog>
|
||||||
|
|
||||||
<aside class="sidebar" id="sidebar">
|
<aside class="sidebar" id="sidebar">
|
||||||
<div class="sidebar-header">
|
<div class="sidebar-header">
|
||||||
<h2>Feeds</h2>
|
<h2>Feeds</h2>
|
||||||
|
Loading…
Reference in New Issue
Block a user