usability changes

This commit is contained in:
whilb 2025-09-02 17:42:39 -07:00
parent d15f0d430f
commit bfb8082c54
4 changed files with 33 additions and 12 deletions

View file

@ -53,9 +53,9 @@ export default {
<label style="display: block; margin-bottom: 8px; font-weight: 500; color: var(--text);"> <label style="display: block; margin-bottom: 8px; font-weight: 500; color: var(--text);">
CIDR Notation (Alternative) CIDR Notation (Alternative)
</label> </label>
<span style="color: var(--muted); margin-right: 10px;">/</span>
<input type="number" name="cidr" value="${s.cidr}" min="0" max="32" <input type="number" name="cidr" value="${s.cidr}" min="0" max="32"
style="width: 200px; padding: 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px;"> style="width: 200px; padding: 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px;">
<span style="color: var(--muted); margin-left: 10px;">/</span>
</div> </div>
</div> </div>
`; `;
@ -97,6 +97,10 @@ export default {
ipv6CidrLabel.style.cssText = 'display: block; margin-bottom: 8px; font-weight: 500; color: var(--text);'; ipv6CidrLabel.style.cssText = 'display: block; margin-bottom: 8px; font-weight: 500; color: var(--text);';
ipv6CidrLabel.textContent = 'CIDR Prefix Length'; ipv6CidrLabel.textContent = 'CIDR Prefix Length';
const ipv6CidrSpan = document.createElement('span');
ipv6CidrSpan.style.cssText = 'color: var(--muted); margin-right: 10px;';
ipv6CidrSpan.textContent = '/';
const ipv6CidrInput = document.createElement('input'); const ipv6CidrInput = document.createElement('input');
ipv6CidrInput.type = 'number'; ipv6CidrInput.type = 'number';
ipv6CidrInput.name = 'ipv6Cidr'; ipv6CidrInput.name = 'ipv6Cidr';
@ -105,13 +109,9 @@ export default {
ipv6CidrInput.max = '128'; ipv6CidrInput.max = '128';
ipv6CidrInput.style.cssText = 'width: 200px; padding: 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px;'; ipv6CidrInput.style.cssText = 'width: 200px; padding: 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px;';
const ipv6CidrSpan = document.createElement('span');
ipv6CidrSpan.style.cssText = 'color: var(--muted); margin-left: 10px;';
ipv6CidrSpan.textContent = '/';
ipv6CidrContainer.appendChild(ipv6CidrLabel); ipv6CidrContainer.appendChild(ipv6CidrLabel);
ipv6CidrContainer.appendChild(ipv6CidrInput);
ipv6CidrContainer.appendChild(ipv6CidrSpan); ipv6CidrContainer.appendChild(ipv6CidrSpan);
ipv6CidrContainer.appendChild(ipv6CidrInput);
// Add all elements to IPv6 section // Add all elements to IPv6 section
ipv6Section.appendChild(ipv6AddressContainer); ipv6Section.appendChild(ipv6AddressContainer);

View file

@ -123,16 +123,20 @@ html,body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-u
display: block; display: block;
} }
/* Add mobile overlay */ /* Mobile overlay - separate element */
.sidenav::before { .mobile-nav-overlay {
content: '';
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
background: rgba(0, 0, 0, 0.5); background: rgba(0, 0, 0, 0.5);
z-index: -1; z-index: 99;
display: none;
}
.mobile-nav-overlay.active {
display: block;
} }
/* Adjust main content spacing for mobile */ /* Adjust main content spacing for mobile */

View file

@ -29,6 +29,9 @@
<aside id="nav" class="sidenav"></aside> <aside id="nav" class="sidenav"></aside>
<main id="view" class="content"></main> <main id="view" class="content"></main>
</div> </div>
<!-- Mobile navigation overlay -->
<div id="mobileNavOverlay" class="mobile-nav-overlay"></div>
<footer class="wrap foot"> <footer class="wrap foot">
<div class="footer-content"> <div class="footer-content">

View file

@ -21,17 +21,30 @@ const navEl = document.getElementById('nav');
const viewEl = document.getElementById('view'); const viewEl = document.getElementById('view');
const themeBtn= document.getElementById('themeToggle'); const themeBtn= document.getElementById('themeToggle');
const navToggleBtn = document.getElementById('navToggle'); const navToggleBtn = document.getElementById('navToggle');
const mobileNavOverlay = document.getElementById('mobileNavOverlay');
initTheme(themeBtn); initTheme(themeBtn);
// Mobile navigation toggle // Mobile navigation toggle
navToggleBtn.addEventListener('click', () => { navToggleBtn.addEventListener('click', () => {
navEl.classList.toggle('mobile-active'); navEl.classList.toggle('mobile-active');
mobileNavOverlay.classList.toggle('active');
});
// Close mobile nav when clicking overlay
mobileNavOverlay.addEventListener('click', () => {
navEl.classList.remove('mobile-active');
mobileNavOverlay.classList.remove('active');
}); });
// Close mobile nav when clicking outside // Close mobile nav when clicking outside
document.addEventListener('click', (e) => { document.addEventListener('click', (e) => {
if (!navEl.contains(e.target) && !navToggleBtn.contains(e.target)) { // Only close if nav is currently open
navEl.classList.remove('mobile-active'); if (navEl.classList.contains('mobile-active')) {
// Close if clicking outside both nav and toggle button
if (!navEl.contains(e.target) && !navToggleBtn.contains(e.target)) {
navEl.classList.remove('mobile-active');
mobileNavOverlay.classList.remove('active');
}
} }
}); });
@ -40,6 +53,7 @@ navEl.addEventListener('click', (e) => {
const a = e.target.closest('a[data-calc]'); const a = e.target.closest('a[data-calc]');
if (a) { if (a) {
navEl.classList.remove('mobile-active'); navEl.classList.remove('mobile-active');
mobileNavOverlay.classList.remove('active');
} }
}); });