diff --git a/CHANGELOG.md b/CHANGELOG.md index 54cf275..6cc75c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [0.5.2] - 2025-03-09 + +### Changed +- Enhanced user interface consistency and dark mode support + - Fixed alignment issues between search field and status dropdown + - Improved empty state display in both light and dark modes + - Standardized padding and sizing for search and filter controls + - Better vertical alignment of form controls in table header + +### Fixed +- Proper centering of "No warranties" message in the dashboard table + - Implemented responsive overlay for empty state messages + - Fixed background colors in dark mode for empty state displays + - Ensured consistent text color across all themes + - Improved mobile responsiveness for empty state messages + ## [0.5.1] - 2025-03-08 ### Changed diff --git a/frontend/status.js b/frontend/status.js index 63293e7..10674af 100644 --- a/frontend/status.js +++ b/frontend/status.js @@ -372,9 +372,45 @@ function filterAndSortWarranties() { tableBody.innerHTML = ''; if (!allWarranties || allWarranties.length === 0) { + // Create a full-width, centered overlay message instead of using table structure + const tableContainer = document.querySelector('.table-responsive'); + const emptyMessage = document.createElement('div'); + + // Apply styles directly to ensure centering + emptyMessage.style.position = 'absolute'; + emptyMessage.style.top = '0'; + emptyMessage.style.left = '0'; + emptyMessage.style.width = '100%'; + emptyMessage.style.height = '300px'; + emptyMessage.style.display = 'flex'; + emptyMessage.style.justifyContent = 'center'; + emptyMessage.style.alignItems = 'center'; + emptyMessage.style.fontSize = '1.2em'; + emptyMessage.style.color = 'var(--text-color)'; + emptyMessage.style.backgroundColor = 'var(--card-bg)'; + emptyMessage.style.zIndex = '1'; // Ensure it's on top + + // Add the message text + emptyMessage.textContent = 'No recently expired or expiring warranties.'; + + // Make sure table container has position relative + tableContainer.style.position = 'relative'; + + // Clear any existing error messages + const existingMessages = tableContainer.querySelectorAll('.empty-message-overlay'); + existingMessages.forEach(msg => msg.remove()); + + // Add class for easier removal later + emptyMessage.classList.add('empty-message-overlay'); + + // Add to the table container + tableContainer.appendChild(emptyMessage); + + // Add a blank row to maintain table structure const row = document.createElement('tr'); - row.innerHTML = 'No recently expired or expiring warranties.'; + row.innerHTML = ''; tableBody.appendChild(row); + return; } @@ -447,9 +483,45 @@ function filterAndSortWarranties() { // Render filtered and sorted warranties if (filteredWarranties.length === 0) { + // Create a full-width, centered overlay message instead of using table structure + const tableContainer = document.querySelector('.table-responsive'); + const emptyMessage = document.createElement('div'); + + // Apply styles directly to ensure centering + emptyMessage.style.position = 'absolute'; + emptyMessage.style.top = '0'; + emptyMessage.style.left = '0'; + emptyMessage.style.width = '100%'; + emptyMessage.style.height = '300px'; + emptyMessage.style.display = 'flex'; + emptyMessage.style.justifyContent = 'center'; + emptyMessage.style.alignItems = 'center'; + emptyMessage.style.fontSize = '1.2em'; + emptyMessage.style.color = 'var(--text-color)'; + emptyMessage.style.backgroundColor = 'var(--card-bg)'; + emptyMessage.style.zIndex = '1'; // Ensure it's on top + + // Add the message text + emptyMessage.textContent = 'No warranties match your search criteria.'; + + // Make sure table container has position relative + tableContainer.style.position = 'relative'; + + // Clear any existing error messages + const existingMessages = tableContainer.querySelectorAll('.empty-message-overlay'); + existingMessages.forEach(msg => msg.remove()); + + // Add class for easier removal later + emptyMessage.classList.add('empty-message-overlay'); + + // Add to the table container + tableContainer.appendChild(emptyMessage); + + // Add a blank row to maintain table structure const row = document.createElement('tr'); - row.innerHTML = 'No warranties match your search criteria.'; + row.innerHTML = ''; tableBody.appendChild(row); + return; } diff --git a/frontend/style.css b/frontend/style.css index 3dc0cf6..2feab0a 100644 --- a/frontend/style.css +++ b/frontend/style.css @@ -424,31 +424,34 @@ input.invalid { } .search-box { - margin-bottom: 20px; position: relative; + margin-bottom: 0; } .search-box input { width: 100%; - padding: 12px 15px 12px 40px; - border: 1px solid var(--medium-gray); + padding: 8px 10px 8px 35px; + border: 1px solid var(--border-color); border-radius: var(--border-radius); - font-size: 1rem; + font-size: 0.95rem; + background-color: var(--bg-color); + color: var(--text-color); transition: var(--transition); } .search-box input:focus { outline: none; border-color: var(--primary-color); - box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.25); + box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2); } .search-box i { position: absolute; - left: 15px; + left: 12px; top: 50%; transform: translateY(-50%); color: var(--dark-gray); + font-size: 1rem; } .warranties-list { @@ -1224,7 +1227,17 @@ input:checked + .toggle-slider:after { #recentExpirationsTable .no-data { text-align: center; color: var(--dark-gray); - padding: 30px; + padding: 50px 30px; + font-size: 1.2em; +} + +#recentExpirationsTable .empty-row { + height: 250px; /* Fixed height for the empty row */ +} + +#recentExpirationsTable .empty-row td { + vertical-align: middle; + text-align: center; } /* Fix for the last column to ensure border extends fully */ @@ -1657,7 +1670,7 @@ input.invalid { .search-box { position: relative; - margin-bottom: 15px; + margin-bottom: 0; } .search-box i { @@ -1671,7 +1684,7 @@ input.invalid { .search-box input { width: 100%; - padding: 10px 10px 10px 35px; + padding: 8px 10px 8px 35px; border: 1px solid var(--border-color); border-radius: var(--border-radius); font-size: 0.95rem; @@ -1708,12 +1721,12 @@ input.invalid { } .filter-select { - padding: 10px 12px; + padding: 8px 10px; border-radius: var(--border-radius); border: 1px solid var(--border-color); - background-color: var(--bg-color); + background-color: var(--card-bg); color: var(--text-color); - font-size: 0.95rem; + font-size: 0.9rem; cursor: pointer; transition: var(--transition); appearance: none; @@ -2455,4 +2468,24 @@ input.invalid { .table-view .serial-numbers li { font-size: 0.85rem; margin-bottom: 2px; +} + +#recentExpirationsTable tbody { + min-height: 250px; /* Ensure minimum height for the table body */ +} + +#recentExpirationsTable .no-data { + text-align: center; + color: var(--dark-gray); + padding: 50px 30px; + font-size: 1.2em; +} + +#recentExpirationsTable .empty-row { + height: 250px; /* Fixed height for the empty row */ +} + +#recentExpirationsTable .empty-row td { + vertical-align: middle; + text-align: center; } \ No newline at end of file