annule max-height presentation en js

This commit is contained in:
2025-12-01 09:50:04 +01:00
parent 811e6b5ca8
commit 02231b8e17
5 changed files with 147 additions and 230 deletions

View File

@@ -499,29 +499,27 @@ if ($("#actualites").length > 0 || $("#home").length > 0) {
.addClass("toggle-actualite") .addClass("toggle-actualite")
.insertAfter(article); .insertAfter(article);
// Fonction commune toggleButton.on("click", function () {
function toggleActu () {
body.slideToggle(); body.slideToggle();
links.slideToggle(); links.slideToggle();
toggleButton.toggleClass("open"); $(this).toggleClass("open");
} });
// Clic sur la flèche // Clic sur la flèche
toggleButton.on("click", function (e) { toggleButton.on("click", function (e) {
e.stopPropagation(); e.stopPropagation(); // évite des conflits éventuels
toggleActu(); toggleActu();
}); });
// Clic n'importe où sur le node // Clic n'importe où sur le node
article.on("click", function (e) { article.on("click", function (e) {
// Ne rien faire si clic sur un lien // Optionnel : ne pas toggle si on clique sur un lien
if ($(e.target).closest("a").length) { if ($(e.target).closest("a").length) {
return; return;
} }
toggleActu(); toggleActu();
}); });
}); });
// slimselect // slimselect
// duplicated due to embeded view (archives) // duplicated due to embeded view (archives)
let actu_type_select = new SlimSelect({ let actu_type_select = new SlimSelect({
@@ -557,7 +555,6 @@ if ($("#actualites").length > 0 || $("#home").length > 0) {
/////////////////// end voir plus... actualite dans /actualites & /home //////////////////// /////////////////// end voir plus... actualite dans /actualites & /home ////////////////////
/////////////// start class à view-rows-ressources //////// /////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () { $(".view-rows-wrapper").each(function () {
@@ -605,74 +602,35 @@ document.addEventListener('DOMContentLoaded', function () {
if (!pres) return; if (!pres) return;
// On sassure que le bloc est animé via max-height
pres.style.overflow = 'hidden';
pres.style.maxHeight = '0px';
// Création du bouton // Création du bouton
const btn = document.createElement('button'); const btn = document.createElement('button');
btn.className = 'btn-equipe-toggle'; btn.className = 'btn-equipe-toggle';
btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE"; btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'false'); btn.setAttribute('aria-expanded', false);
// Insertion du bouton juste après le bloc présentation // Insertion du bouton juste après le bloc présentation
pres.insertAdjacentElement('afterend', btn); pres.insertAdjacentElement('afterend', btn);
// Ligne de séparation après le bouton // 3. Ajout de la ligne après le bouton
const separator = document.createElement('div'); const separator = document.createElement('div');
separator.className = 'equipe-separator'; separator.className = 'equipe-separator';
btn.insertAdjacentElement('afterend', separator); btn.insertAdjacentElement('afterend', separator);
function openPanel() {
pres.classList.add('is-open');
if (photo) photo.classList.add('is-open');
// On force le navigateur à appliquer la classe avant de mesurer
requestAnimationFrame(() => {
// Sassurer que le bloc nest pas en display:none via le CSS
// Si tu veux être ultra safe :
pres.style.maxHeight = 'none'; // on enlève lancienne contrainte
const h = pres.scrollHeight; // hauteur réelle du contenu
pres.style.maxHeight = '0px'; // on repart de 0 pour lanimation
requestAnimationFrame(() => {
pres.style.maxHeight = h + 'px';
});
});
btn.textContent = "FERMER LA PRÉSENTATION DE L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'true');
}
function closePanel() {
// Hauteur actuelle (contenu visible)
const h = pres.scrollHeight;
pres.style.maxHeight = h + 'px';
requestAnimationFrame(() => {
pres.style.maxHeight = '0px';
pres.classList.remove('is-open');
if (photo) photo.classList.remove('is-open');
});
btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'false');
}
// Toggle // Toggle
btn.addEventListener('click', function () { btn.addEventListener('click', function () {
const isOpen = btn.getAttribute('aria-expanded') === 'true'; const isOpen = pres.classList.toggle('is-open');
if (isOpen) { if (photo) photo.classList.toggle('is-open');
closePanel();
} else { btn.textContent = isOpen
openPanel(); ? "FERMER LA PRÉSENTATION DE L'ÉQUIPE"
} : "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', isOpen);
}); });
}); });
//////////////end toggle page node projet ////////////////// //////////////end toggle page node projet //////////////////

File diff suppressed because one or more lines are too long

View File

@@ -4478,6 +4478,7 @@ body {
} }
.node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .field_field_equipe_photo.is-open, .node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .field_field_equipe_photo.is-open,
.node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .field_field_equipe_presentation.is-open { .node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .field_field_equipe_presentation.is-open {
max-height: 1500px;
opacity: 1; opacity: 1;
} }
.node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .btn-equipe-toggle { .node-type-projet .layout--threecol-25-50-25 .layout__region--second .block-region-second .btn-equipe-toggle {

View File

@@ -441,29 +441,27 @@ if ($("#actualites").length > 0 || $("#home").length > 0) {
.addClass("toggle-actualite") .addClass("toggle-actualite")
.insertAfter(article); .insertAfter(article);
// Fonction commune toggleButton.on("click", function () {
function toggleActu () {
body.slideToggle(); body.slideToggle();
links.slideToggle(); links.slideToggle();
toggleButton.toggleClass("open"); $(this).toggleClass("open");
} });
// Clic sur la flèche // Clic sur la flèche
toggleButton.on("click", function (e) { toggleButton.on("click", function (e) {
e.stopPropagation(); e.stopPropagation(); // évite des conflits éventuels
toggleActu(); toggleActu();
}); });
// Clic n'importe où sur le node // Clic n'importe où sur le node
article.on("click", function (e) { article.on("click", function (e) {
// Ne rien faire si clic sur un lien // Optionnel : ne pas toggle si on clique sur un lien
if ($(e.target).closest("a").length) { if ($(e.target).closest("a").length) {
return; return;
} }
toggleActu(); toggleActu();
}); });
}); });
// slimselect // slimselect
// duplicated due to embeded view (archives) // duplicated due to embeded view (archives)
let actu_type_select = new SlimSelect({ let actu_type_select = new SlimSelect({
@@ -499,7 +497,6 @@ if ($("#actualites").length > 0 || $("#home").length > 0) {
/////////////////// end voir plus... actualite dans /actualites & /home //////////////////// /////////////////// end voir plus... actualite dans /actualites & /home ////////////////////
/////////////// start class à view-rows-ressources //////// /////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () { $(".view-rows-wrapper").each(function () {
@@ -547,74 +544,35 @@ document.addEventListener('DOMContentLoaded', function () {
if (!pres) return; if (!pres) return;
// On sassure que le bloc est animé via max-height
pres.style.overflow = 'hidden';
pres.style.maxHeight = '0px';
// Création du bouton // Création du bouton
const btn = document.createElement('button'); const btn = document.createElement('button');
btn.className = 'btn-equipe-toggle'; btn.className = 'btn-equipe-toggle';
btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE"; btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'false'); btn.setAttribute('aria-expanded', false);
// Insertion du bouton juste après le bloc présentation // Insertion du bouton juste après le bloc présentation
pres.insertAdjacentElement('afterend', btn); pres.insertAdjacentElement('afterend', btn);
// Ligne de séparation après le bouton // 3. Ajout de la ligne après le bouton
const separator = document.createElement('div'); const separator = document.createElement('div');
separator.className = 'equipe-separator'; separator.className = 'equipe-separator';
btn.insertAdjacentElement('afterend', separator); btn.insertAdjacentElement('afterend', separator);
function openPanel() {
pres.classList.add('is-open');
if (photo) photo.classList.add('is-open');
// On force le navigateur à appliquer la classe avant de mesurer
requestAnimationFrame(() => {
// Sassurer que le bloc nest pas en display:none via le CSS
// Si tu veux être ultra safe :
pres.style.maxHeight = 'none'; // on enlève lancienne contrainte
const h = pres.scrollHeight; // hauteur réelle du contenu
pres.style.maxHeight = '0px'; // on repart de 0 pour lanimation
requestAnimationFrame(() => {
pres.style.maxHeight = h + 'px';
});
});
btn.textContent = "FERMER LA PRÉSENTATION DE L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'true');
}
function closePanel() {
// Hauteur actuelle (contenu visible)
const h = pres.scrollHeight;
pres.style.maxHeight = h + 'px';
requestAnimationFrame(() => {
pres.style.maxHeight = '0px';
pres.classList.remove('is-open');
if (photo) photo.classList.remove('is-open');
});
btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', 'false');
}
// Toggle // Toggle
btn.addEventListener('click', function () { btn.addEventListener('click', function () {
const isOpen = btn.getAttribute('aria-expanded') === 'true'; const isOpen = pres.classList.toggle('is-open');
if (isOpen) { if (photo) photo.classList.toggle('is-open');
closePanel();
} else { btn.textContent = isOpen
openPanel(); ? "FERMER LA PRÉSENTATION DE L'ÉQUIPE"
} : "EN SAVOIR PLUS SUR L'ÉQUIPE";
btn.setAttribute('aria-expanded', isOpen);
}); });
}); });
//////////////end toggle page node projet ////////////////// //////////////end toggle page node projet //////////////////

View File

@@ -207,7 +207,7 @@
.field_field_equipe_photo.is-open, .field_field_equipe_photo.is-open,
.field_field_equipe_presentation.is-open { .field_field_equipe_presentation.is-open {
// max-height: 1500px; max-height: 1500px;
opacity: 1; opacity: 1;
} }