forked from FroSteel/Planification
v2026.5.18 — Polish date custom
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "Planification",
|
"name": "Planification",
|
||||||
"version": "2026.5.17",
|
"version": "2026.5.18",
|
||||||
"description": "Vue claire et rapide du planning des techniciens EasyVista. Regroupe interventions et réservations par tech, affiche horaires, contact, lieu, catégorie et statut en un coup d'œil.",
|
"description": "Vue claire et rapide du planning des techniciens EasyVista. Regroupe interventions et réservations par tech, affiche horaires, contact, lieu, catégorie et statut en un coup d'œil.",
|
||||||
"permissions": ["activeTab", "scripting", "storage", "tabs", "alarms"],
|
"permissions": ["activeTab", "scripting", "storage", "tabs", "alarms"],
|
||||||
"host_permissions": [
|
"host_permissions": [
|
||||||
|
|||||||
+73
-14
@@ -2548,6 +2548,11 @@ header.topbar::before {
|
|||||||
/* Laisser un peu de place en haut pour la topbar */
|
/* Laisser un peu de place en haut pour la topbar */
|
||||||
padding-top: 30px !important;
|
padding-top: 30px !important;
|
||||||
}
|
}
|
||||||
|
/* v2026.5.18 : masquer le conteneur d'actions d'origine (↻ reload + 📌 pin)
|
||||||
|
dans les popups épinglés — leur place est reprise par notre .pinned-popup-topbar */
|
||||||
|
.pinned-popup .tooltip-actions {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
.pinned-popup-topbar {
|
.pinned-popup-topbar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 4px;
|
top: 4px;
|
||||||
@@ -2555,7 +2560,7 @@ header.topbar::before {
|
|||||||
display: flex;
|
display: flex;
|
||||||
gap: 2px;
|
gap: 2px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
z-index: 2;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
.pinned-popup-btn {
|
.pinned-popup-btn {
|
||||||
width: 26px;
|
width: 26px;
|
||||||
@@ -2585,24 +2590,46 @@ header.topbar::before {
|
|||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
v2026.5.17 : mode Minimisé (popup flottant compact, juste la ref)
|
v2026.5.17 : mode Minimisé (popup flottant compact, juste la ref)
|
||||||
|
v2026.5.18 : fix affichage — on masque TOUT sauf la ref et la topbar
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
.pinned-popup.pinned-popup-minimized {
|
.pinned-popup.pinned-popup-minimized {
|
||||||
min-width: 160px !important;
|
min-width: 180px !important;
|
||||||
max-width: 220px !important;
|
max-width: 260px !important;
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
padding-top: 28px !important;
|
padding-top: 28px !important;
|
||||||
padding-bottom: 6px !important;
|
padding-bottom: 8px !important;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.pinned-popup.pinned-popup-minimized > :not(.pinned-popup-topbar):not(.iv-ref-header):not(.pinned-popup-dragbar) {
|
/* Masquer tous les descendants sauf ceux qu'on veut voir */
|
||||||
|
.pinned-popup.pinned-popup-minimized * {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
/* Réafficher la topbar et ses boutons */
|
||||||
|
.pinned-popup.pinned-popup-minimized .pinned-popup-topbar,
|
||||||
|
.pinned-popup.pinned-popup-minimized .pinned-popup-topbar * {
|
||||||
|
display: flex !important;
|
||||||
|
}
|
||||||
|
/* Réafficher la dragbar */
|
||||||
|
.pinned-popup.pinned-popup-minimized .pinned-popup-dragbar {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
/* Réafficher la ref (peut être dans une row imbriquée) */
|
||||||
.pinned-popup.pinned-popup-minimized .iv-ref-header {
|
.pinned-popup.pinned-popup-minimized .iv-ref-header {
|
||||||
text-align: center;
|
display: block !important;
|
||||||
padding: 4px 8px !important;
|
text-align: center !important;
|
||||||
|
padding: 6px 12px !important;
|
||||||
grid-column: unset !important;
|
grid-column: unset !important;
|
||||||
font-size: 14px;
|
font-size: 14px !important;
|
||||||
|
font-weight: 700 !important;
|
||||||
|
color: var(--text) !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
/* Et si la ref est dans une row grid, reshowrow pour qu'elle s'affiche */
|
||||||
|
.pinned-popup.pinned-popup-minimized .intervention-v2,
|
||||||
|
.pinned-popup.pinned-popup-minimized .tt-ref-cell {
|
||||||
|
display: block !important;
|
||||||
|
grid-template: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
@@ -2624,6 +2651,7 @@ header.topbar::before {
|
|||||||
background: var(--bg-elevated);
|
background: var(--bg-elevated);
|
||||||
border-top: 1px solid var(--border);
|
border-top: 1px solid var(--border);
|
||||||
box-shadow: 0 -2px 10px rgba(0,0,0,0.2);
|
box-shadow: 0 -2px 10px rgba(0,0,0,0.2);
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
.pinned-popups-dock.visible {
|
.pinned-popups-dock.visible {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -2632,19 +2660,50 @@ header.topbar::before {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 6px 14px;
|
padding: 6px 14px;
|
||||||
background: var(--accent, #3b82f6);
|
background: var(--bg-muted);
|
||||||
color: white;
|
color: var(--text);
|
||||||
border: none;
|
border: 1px solid var(--border);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
font-family: var(--mono, monospace);
|
font-family: var(--mono, monospace);
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: 600;
|
font-weight: 700;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: background 0.15s, transform 0.15s;
|
transition: background 0.15s, transform 0.15s, filter 0.15s;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.pinned-popup-dock-pill:hover {
|
.pinned-popup-dock-pill:hover {
|
||||||
background: var(--accent-hover, #2563eb);
|
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
|
filter: brightness(1.1);
|
||||||
|
}
|
||||||
|
/* v2026.5.18 : couleurs par catégorie (fond = couleur, texte blanc) */
|
||||||
|
.pinned-popup-dock-pill.color-livraison { background: var(--c-livraison); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-installation { background: var(--c-installation); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-recup { background: var(--c-recup); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-remplacement { background: var(--c-remplacement); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-incident { background: var(--c-incident); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-rollout { background: var(--c-rollout); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-reservation { background: var(--c-reservation); color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-absence { background: #2a2f36; color: white; border-color: transparent; }
|
||||||
|
.pinned-popup-dock-pill.color-autre { background: var(--c-autre); color: white; border-color: transparent; }
|
||||||
|
|
||||||
|
/* v2026.5.18 : bouton "Fermer tous" à droite du dock */
|
||||||
|
.pinned-popups-close-all {
|
||||||
|
margin-left: auto;
|
||||||
|
padding: 6px 12px;
|
||||||
|
background: transparent;
|
||||||
|
color: var(--text-muted);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: inherit;
|
||||||
|
transition: background 0.15s, color 0.15s, border-color 0.15s;
|
||||||
|
}
|
||||||
|
.pinned-popups-close-all:hover {
|
||||||
|
background: rgba(239, 68, 68, 0.1);
|
||||||
|
color: #ef4444;
|
||||||
|
border-color: #ef4444;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
|
|||||||
@@ -2366,9 +2366,13 @@ async function writeCache(isoDate, data) {
|
|||||||
async function loadForDate(isoDate, opts = {}) {
|
async function loadForDate(isoDate, opts = {}) {
|
||||||
// v4.3.1 : changer de date fermait tous les popups épinglés.
|
// v4.3.1 : changer de date fermait tous les popups épinglés.
|
||||||
// v2026.5.17 : les popups épinglés restent maintenant ouverts entre dates,
|
// v2026.5.17 : les popups épinglés restent maintenant ouverts entre dates,
|
||||||
// avec les données qu'ils avaient au moment de l'épinglage. L'utilisateur
|
// avec les données qu'ils avaient au moment de l'épinglage.
|
||||||
// peut les fermer manuellement s'il veut.
|
// v2026.5.18 : au changement de date, on réduit tous les popups épinglés
|
||||||
|
// dans la taskbar du bas (l'user peut les re-agrandir au clic).
|
||||||
const previousDate = state.currentDate;
|
const previousDate = state.currentDate;
|
||||||
|
if (previousDate && previousDate !== isoDate) {
|
||||||
|
_reduceAllPinnedPopups();
|
||||||
|
}
|
||||||
|
|
||||||
state.currentDate = isoDate;
|
state.currentDate = isoDate;
|
||||||
document.getElementById("date-picker").value = isoDate;
|
document.getElementById("date-picker").value = isoDate;
|
||||||
@@ -6476,35 +6480,29 @@ function pinTooltip() {
|
|||||||
popup.dataset.actionId = iv.actionId || "";
|
popup.dataset.actionId = iv.actionId || "";
|
||||||
popup.innerHTML = srcEl.innerHTML;
|
popup.innerHTML = srcEl.innerHTML;
|
||||||
|
|
||||||
|
// v2026.5.18 : mémoriser la ref et la couleur pour le dock (pastille avec
|
||||||
|
// couleur de catégorie + texte ref)
|
||||||
|
popup.dataset.ref = iv.ref || "";
|
||||||
|
popup.dataset.colorKey = (typeof deriveColorKey === "function" ? deriveColorKey(iv) : "autre") || "autre";
|
||||||
|
|
||||||
// v2026.5.17 : masquer l'icône 📌 du contenu cloné (redondante car le
|
// v2026.5.17 : masquer l'icône 📌 du contenu cloné (redondante car le
|
||||||
// popup a sa propre topbar avec le bouton "désépingler" 📍 explicite)
|
// popup a sa propre topbar avec le bouton "désépingler" 📍 explicite)
|
||||||
const oldPin = popup.querySelector('.tooltip-pinbtn[data-action="pin"]');
|
const oldPin = popup.querySelector('.tooltip-pinbtn[data-action="pin"]');
|
||||||
if (oldPin) oldPin.remove();
|
if (oldPin) oldPin.remove();
|
||||||
|
|
||||||
// v2026.5.17 : topbar avec 3 boutons pour un popup épinglé :
|
// v2026.5.17 : topbar avec 3 boutons pour un popup épinglé :
|
||||||
// _ = Minimiser (popup reste flottant mais compact, juste la ref)
|
// v2026.5.18 : swap des actions — _ réduit dans le dock, ▭ minimise flottant
|
||||||
// ▭ = Réduire (docké dans la taskbar du bas)
|
// _ = Réduire (docké dans la taskbar du bas)
|
||||||
|
// ▭ = Minimiser (popup reste flottant mais compact, juste la ref)
|
||||||
// 📍 = Désépingler (l'icône d'épingle "plantée" ; clic = retire l'épingle)
|
// 📍 = Désépingler (l'icône d'épingle "plantée" ; clic = retire l'épingle)
|
||||||
const topbar = document.createElement("div");
|
const topbar = document.createElement("div");
|
||||||
topbar.className = "pinned-popup-topbar";
|
topbar.className = "pinned-popup-topbar";
|
||||||
|
|
||||||
// Bouton Minimiser
|
// Bouton Réduire (icône _ )
|
||||||
const minBtn = document.createElement("button");
|
|
||||||
minBtn.type = "button";
|
|
||||||
minBtn.className = "pinned-popup-btn pinned-popup-minimize";
|
|
||||||
minBtn.innerHTML = "_";
|
|
||||||
minBtn.title = "Minimiser (reste flottant mais compact)";
|
|
||||||
minBtn.addEventListener("click", (e) => {
|
|
||||||
e.stopPropagation();
|
|
||||||
_minimizePinnedPopup(popup);
|
|
||||||
});
|
|
||||||
topbar.appendChild(minBtn);
|
|
||||||
|
|
||||||
// Bouton Réduire
|
|
||||||
const reduceBtn = document.createElement("button");
|
const reduceBtn = document.createElement("button");
|
||||||
reduceBtn.type = "button";
|
reduceBtn.type = "button";
|
||||||
reduceBtn.className = "pinned-popup-btn pinned-popup-reduce";
|
reduceBtn.className = "pinned-popup-btn pinned-popup-reduce";
|
||||||
reduceBtn.innerHTML = "▭";
|
reduceBtn.innerHTML = "_";
|
||||||
reduceBtn.title = "Réduire (docké en bas de l'écran)";
|
reduceBtn.title = "Réduire (docké en bas de l'écran)";
|
||||||
reduceBtn.addEventListener("click", (e) => {
|
reduceBtn.addEventListener("click", (e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@@ -6512,6 +6510,18 @@ function pinTooltip() {
|
|||||||
});
|
});
|
||||||
topbar.appendChild(reduceBtn);
|
topbar.appendChild(reduceBtn);
|
||||||
|
|
||||||
|
// Bouton Minimiser (icône ▭ )
|
||||||
|
const minBtn = document.createElement("button");
|
||||||
|
minBtn.type = "button";
|
||||||
|
minBtn.className = "pinned-popup-btn pinned-popup-minimize";
|
||||||
|
minBtn.innerHTML = "▭";
|
||||||
|
minBtn.title = "Minimiser (reste flottant mais compact)";
|
||||||
|
minBtn.addEventListener("click", (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
_minimizePinnedPopup(popup);
|
||||||
|
});
|
||||||
|
topbar.appendChild(minBtn);
|
||||||
|
|
||||||
// Bouton Désépingler (icône épingle plantée)
|
// Bouton Désépingler (icône épingle plantée)
|
||||||
const unpinBtn = document.createElement("button");
|
const unpinBtn = document.createElement("button");
|
||||||
unpinBtn.type = "button";
|
unpinBtn.type = "button";
|
||||||
@@ -6636,6 +6646,21 @@ function _softUnpinPopup(el) {
|
|||||||
el.classList.remove("pinned-popup-minimized");
|
el.classList.remove("pinned-popup-minimized");
|
||||||
el.classList.remove("pinned-popup-reduced");
|
el.classList.remove("pinned-popup-reduced");
|
||||||
|
|
||||||
|
// v2026.5.18 : retirer aussi la pastille du dock si elle existe
|
||||||
|
if (el._linkedPill) {
|
||||||
|
try { el._linkedPill.remove(); } catch (e) {}
|
||||||
|
el._linkedPill = null;
|
||||||
|
}
|
||||||
|
// Si le dock est vide, le cacher ; mettre à jour le bouton "Fermer tous"
|
||||||
|
const dock = document.getElementById("pinned-popups-dock");
|
||||||
|
if (dock && dock.querySelectorAll(".pinned-popup-dock-pill").length === 0) {
|
||||||
|
dock.classList.remove("visible");
|
||||||
|
const closeAllBtn = document.getElementById("pinned-popups-close-all");
|
||||||
|
if (closeAllBtn) closeAllBtn.remove();
|
||||||
|
} else {
|
||||||
|
_ensureDockCloseAllBtn();
|
||||||
|
}
|
||||||
|
|
||||||
// Helper qui joue l'animation de sortie puis supprime le DOM
|
// Helper qui joue l'animation de sortie puis supprime le DOM
|
||||||
const animateAndRemove = () => {
|
const animateAndRemove = () => {
|
||||||
el.classList.add("unpinning");
|
el.classList.add("unpinning");
|
||||||
@@ -6704,7 +6729,7 @@ function _expandPinnedPopup(popup) {
|
|||||||
// Restaurer bouton Minimiser
|
// Restaurer bouton Minimiser
|
||||||
const minBtn = popup.querySelector(".pinned-popup-minimize");
|
const minBtn = popup.querySelector(".pinned-popup-minimize");
|
||||||
if (minBtn) {
|
if (minBtn) {
|
||||||
minBtn.innerHTML = "_";
|
minBtn.innerHTML = "▭";
|
||||||
minBtn.title = "Minimiser (reste flottant mais compact)";
|
minBtn.title = "Minimiser (reste flottant mais compact)";
|
||||||
const newBtn = minBtn.cloneNode(true);
|
const newBtn = minBtn.cloneNode(true);
|
||||||
minBtn.replaceWith(newBtn);
|
minBtn.replaceWith(newBtn);
|
||||||
@@ -6732,8 +6757,14 @@ function _reducePinnedPopup(popup) {
|
|||||||
if (!popup) return;
|
if (!popup) return;
|
||||||
|
|
||||||
// Récupérer la référence pour le label de la pastille
|
// Récupérer la référence pour le label de la pastille
|
||||||
|
// v2026.5.18 : préférer le dataset.ref mémorisé à la création plutôt que
|
||||||
|
// le textContent (qui peut contenir "—" si la ref n'était pas encore
|
||||||
|
// disponible à l'épinglage)
|
||||||
const refEl = popup.querySelector(".iv-ref-header");
|
const refEl = popup.querySelector(".iv-ref-header");
|
||||||
const label = refEl ? (refEl.textContent || "").trim() || "Popup" : "Popup";
|
const label = popup.dataset.ref
|
||||||
|
|| (refEl ? (refEl.textContent || "").trim() : "")
|
||||||
|
|| "Popup";
|
||||||
|
const colorKey = popup.dataset.colorKey || "autre";
|
||||||
|
|
||||||
// S'assurer que la taskbar du bas existe
|
// S'assurer que la taskbar du bas existe
|
||||||
let dock = document.getElementById("pinned-popups-dock");
|
let dock = document.getElementById("pinned-popups-dock");
|
||||||
@@ -6745,9 +6776,11 @@ function _reducePinnedPopup(popup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Créer la pastille dock
|
// Créer la pastille dock
|
||||||
|
// v2026.5.18 : le fond de la pastille prend la couleur de catégorie
|
||||||
|
// (via la classe color-XXX déjà utilisée ailleurs dans le CSS)
|
||||||
const pill = document.createElement("button");
|
const pill = document.createElement("button");
|
||||||
pill.type = "button";
|
pill.type = "button";
|
||||||
pill.className = "pinned-popup-dock-pill";
|
pill.className = "pinned-popup-dock-pill color-" + colorKey;
|
||||||
pill.textContent = label;
|
pill.textContent = label;
|
||||||
pill.title = "Cliquer pour agrandir";
|
pill.title = "Cliquer pour agrandir";
|
||||||
|
|
||||||
@@ -6772,6 +6805,53 @@ function _reducePinnedPopup(popup) {
|
|||||||
|
|
||||||
dock.appendChild(pill);
|
dock.appendChild(pill);
|
||||||
dock.classList.add("visible");
|
dock.classList.add("visible");
|
||||||
|
|
||||||
|
// v2026.5.18 : s'assurer qu'il y a un bouton "Fermer tous" si 2+ popups
|
||||||
|
_ensureDockCloseAllBtn();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* v2026.5.18 : réduit TOUS les popups épinglés actuellement ouverts (en mode
|
||||||
|
* normal ou minimisé) dans la taskbar du bas. Appelé au changement de date.
|
||||||
|
*/
|
||||||
|
function _reduceAllPinnedPopups() {
|
||||||
|
const popups = document.querySelectorAll(".pinned-popup:not(.pinned-popup-reduced)");
|
||||||
|
popups.forEach(popup => {
|
||||||
|
try { _reducePinnedPopup(popup); } catch (e) {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* v2026.5.18 : ajoute (ou met à jour) le bouton "Fermer tous" dans le dock
|
||||||
|
* quand au moins 2 popups épinglés existent (réduits OU affichés).
|
||||||
|
* Le bouton est placé à droite du dock.
|
||||||
|
*/
|
||||||
|
function _ensureDockCloseAllBtn() {
|
||||||
|
const dock = document.getElementById("pinned-popups-dock");
|
||||||
|
if (!dock) return;
|
||||||
|
const allPinned = document.querySelectorAll(".pinned-popup");
|
||||||
|
let closeAllBtn = document.getElementById("pinned-popups-close-all");
|
||||||
|
if (allPinned.length >= 2) {
|
||||||
|
if (!closeAllBtn) {
|
||||||
|
closeAllBtn = document.createElement("button");
|
||||||
|
closeAllBtn.type = "button";
|
||||||
|
closeAllBtn.id = "pinned-popups-close-all";
|
||||||
|
closeAllBtn.className = "pinned-popups-close-all";
|
||||||
|
closeAllBtn.textContent = "✕ Fermer tous";
|
||||||
|
closeAllBtn.title = "Fermer tous les popups épinglés";
|
||||||
|
closeAllBtn.addEventListener("click", (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
closeAllPinnedPopups();
|
||||||
|
});
|
||||||
|
dock.appendChild(closeAllBtn);
|
||||||
|
} else {
|
||||||
|
// Remettre à la fin (après les pastilles éventuellement ajoutées)
|
||||||
|
dock.appendChild(closeAllBtn);
|
||||||
|
}
|
||||||
|
dock.classList.add("visible");
|
||||||
|
} else if (closeAllBtn) {
|
||||||
|
closeAllBtn.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6786,7 +6866,7 @@ function _restorePinnedPopupFromDock(popup) {
|
|||||||
popup.classList.remove("pinned-popup-minimized");
|
popup.classList.remove("pinned-popup-minimized");
|
||||||
const minBtn = popup.querySelector(".pinned-popup-minimize");
|
const minBtn = popup.querySelector(".pinned-popup-minimize");
|
||||||
if (minBtn) {
|
if (minBtn) {
|
||||||
minBtn.innerHTML = "_";
|
minBtn.innerHTML = "▭";
|
||||||
minBtn.title = "Minimiser (reste flottant mais compact)";
|
minBtn.title = "Minimiser (reste flottant mais compact)";
|
||||||
const newBtn = minBtn.cloneNode(true);
|
const newBtn = minBtn.cloneNode(true);
|
||||||
minBtn.replaceWith(newBtn);
|
minBtn.replaceWith(newBtn);
|
||||||
@@ -6802,10 +6882,17 @@ function _restorePinnedPopupFromDock(popup) {
|
|||||||
popup._linkedPill = null;
|
popup._linkedPill = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si le dock est vide, le masquer
|
// Si le dock est vide (sauf le bouton "Fermer tous"), le masquer
|
||||||
const dock = document.getElementById("pinned-popups-dock");
|
const dock = document.getElementById("pinned-popups-dock");
|
||||||
if (dock && dock.children.length === 0) {
|
if (dock) {
|
||||||
|
const remainingPills = dock.querySelectorAll(".pinned-popup-dock-pill").length;
|
||||||
|
if (remainingPills === 0) {
|
||||||
dock.classList.remove("visible");
|
dock.classList.remove("visible");
|
||||||
|
const closeAllBtn = document.getElementById("pinned-popups-close-all");
|
||||||
|
if (closeAllBtn) closeAllBtn.remove();
|
||||||
|
} else {
|
||||||
|
_ensureDockCloseAllBtn();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6869,6 +6956,13 @@ function closeAllPinnedPopups() {
|
|||||||
pinnedPopups.length = 0;
|
pinnedPopups.length = 0;
|
||||||
// Fermer aussi les popups en état soft-unpinned qui trainent encore
|
// Fermer aussi les popups en état soft-unpinned qui trainent encore
|
||||||
document.querySelectorAll(".pinned-popup.soft-unpinned").forEach(el => el.remove());
|
document.querySelectorAll(".pinned-popup.soft-unpinned").forEach(el => el.remove());
|
||||||
|
// v2026.5.18 : supprimer aussi les éléments du dock
|
||||||
|
document.querySelectorAll(".pinned-popup").forEach(el => el.remove());
|
||||||
|
document.querySelectorAll(".pinned-popup-dock-pill").forEach(el => el.remove());
|
||||||
|
const closeAllBtn = document.getElementById("pinned-popups-close-all");
|
||||||
|
if (closeAllBtn) closeAllBtn.remove();
|
||||||
|
const dock = document.getElementById("pinned-popups-dock");
|
||||||
|
if (dock) dock.classList.remove("visible");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user