Renovate mitigation panels and messages

This commit is contained in:
2026-02-15 21:02:40 +00:00
parent 63af5d234e
commit cc3fff0757
12 changed files with 1518 additions and 236 deletions

View File

@@ -60,6 +60,41 @@
});
});
const composeLink = document.getElementById('nav-compose-link');
const composeDropdown = document.getElementById('nav-compose-contacts');
let composePreviewLoaded = false;
let composePreviewLoading = false;
if (composeLink && composeDropdown) {
composeLink.addEventListener('mouseenter', () => {
const previewUrl = composeLink.dataset.previewUrl || '';
if (!previewUrl || composePreviewLoaded || composePreviewLoading) {
return;
}
composePreviewLoading = true;
fetch(previewUrl, {
method: 'GET',
credentials: 'same-origin',
headers: { 'HX-Request': 'true' },
})
.then((response) => {
if (!response.ok) {
throw new Error('Failed contacts preview fetch.');
}
return response.text();
})
.then((html) => {
composeDropdown.innerHTML = html;
composePreviewLoaded = true;
})
.catch(() => {
composePreviewLoaded = false;
})
.finally(() => {
composePreviewLoading = false;
});
});
}
});
</script>
<style>
@@ -274,16 +309,25 @@
{% if user.is_authenticated %}
<div class="navbar-item has-dropdown is-hoverable">
<a
id="nav-compose-link"
class="navbar-link"
hx-get="{% url 'compose_contacts_dropdown' %}"
data-preview-url="{% url 'compose_contacts_dropdown' %}"
data-full-url="{% url 'compose_contacts_dropdown' %}?all=1"
hx-get="{% url 'compose_contacts_dropdown' %}?all=1"
hx-target="#nav-compose-contacts"
hx-trigger="click once"
hx-trigger="click"
hx-swap="innerHTML">
<span class="icon is-small"><i class="fa-solid fa-paper-plane"></i></span>
<span style="margin-left: 0.35rem;">Message</span>
</a>
<div class="navbar-dropdown" id="nav-compose-contacts">
<a class="navbar-item is-disabled">Load contacts</a>
<a
class="navbar-item"
hx-get="{% url 'compose_contacts_dropdown' %}?all=1"
hx-target="#nav-compose-contacts"
hx-swap="innerHTML">
Fetch Contacts
</a>
</div>
</div>
<a class="navbar-item" href="{% url 'ai_workspace' %}">