Files
Alfredv2/alfred/app/static/js/alfred-reponse-close-v1.js
T

52 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ALFRED_REPONSE_CLOSE_V1 — Boutons visibles dans la scène, sans modifier Hermes. */
(() => {
'use strict';
const stage = document.getElementById('stage');
const main = document.getElementById('alfredMainV1');
const returnButton = document.getElementById('avBack');
if (!stage || !main || !returnButton) {
console.warn('[Dona] Fermeture réponse : éléments Glass V2 manquants.');
return;
}
if (stage.dataset.alfredReplyCloseV1 === 'ready') return;
stage.dataset.alfredReplyCloseV1 = 'ready';
// La V1 crée le bouton « Retour à l’accueil » DANS #alfredMainV1 (z-index 1),
// alors que la scène #stage est un frère au-dessus (z-index 8).
// On déplace le bouton D'ORIGINE : son écouteur de clic et son id restent intacts.
const bar = document.createElement('div');
bar.className = 'av-reponse-actions';
bar.setAttribute('role', 'group');
bar.setAttribute('aria-label', 'Navigation dans la réponse');
const closeButton = document.createElement('button');
closeButton.type = 'button';
closeButton.className = 'av-reponse-close';
closeButton.setAttribute('aria-label', 'Fermer la réponse et revenir à l’accueil');
closeButton.title = 'Fermer la réponse';
closeButton.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M5 5l14 14M19 5 5 19"/></svg>';
returnButton.classList.add('av-reponse-home');
returnButton.removeAttribute('style');
returnButton.title = 'Fermer cette réponse et revenir à l’accueil';
bar.append(returnButton, closeButton);
stage.insertBefore(bar, stage.firstChild);
const goHome = () => {
// Utilise le gestionnaire déjà attaché à #avBack par Glass V1 :
// focusScene(false) + éventuel AlfredViews.goHome().
returnButton.click();
};
closeButton.addEventListener('click', goHome);
document.addEventListener('keydown', event => {
if (event.key !== 'Escape' || event.defaultPrevented || event.altKey || event.ctrlKey || event.metaKey) return;
// Les boîtes de dialogue (caméra, ComfyUI, etc.) gardent leur propre Escape.
if (document.querySelector('dialog[open], [role="dialog"][aria-modal="true"]')) return;
if (main.classList.contains('is-focused')) {
event.preventDefault();
goHome();
}
});
})();