Conversation
ThibaudGLT
commented
Mar 18, 2026
- Add a collapse button with specific label setting
- Fix behavior when search is updated with new selected facet
- Add reset button
- Change filter button icon
- Add a collapse button with specific label setting - Fix behavior when search is updated with new selected facet - Add reset button - Change filter button icon
| function toggleHiddenFacets(name, button) { | ||
| var hiddenFacets = document.querySelector('.search-facet[data-facet-name="' + name + '"] .hidden-facets'); | ||
|
|
||
| if (hiddenFacets.style.display === 'none' || hiddenFacets.style.display === '') { | ||
| hiddenFacets.style.display = 'block'; | ||
| button.classList.remove('o-icon-down'); | ||
| button.classList.add('o-icon-up'); | ||
| button.innerHTML = ' ' + button.getAttribute('data-collapse-label'); | ||
| } else { | ||
| hiddenFacets.style.display = 'none'; | ||
| button.classList.remove('o-icon-up'); | ||
| button.classList.add('o-icon-down'); | ||
| button.innerHTML = ' ' + button.getAttribute('data-expand-label'); | ||
| } | ||
| } |
There was a problem hiding this comment.
C'est pas vraiment "theme-friendly": modif de l'icône et de la propriété display + le fait de se baser sur la propriété display pour savoir s'il faut cacher ou montrer le bloc.
Ça annule ce que j'avais fait dans 9c31e68 (où le JS se contente d'ajouter/retirer une classe, tout le reste est fait en CSS)
Pour le bouton qui change d'icône et de libellé, c'est à mon avis plus simple (et plus theme-able) d'avoir 2 boutons, et de cacher l'un ou l'autre selon le besoin.
Ça évite aussi une faille XSS (Si data-*-label contient une balise <script> par ex, c'est exécuté quand on clique sur le bouton)
| } | ||
| for (const [key, value] of Array.from(params.entries())) { | ||
| if (key.startsWith('limit[')) { | ||
| params.delete(key); |
There was a problem hiding this comment.
En théorie on peut utiliser les paramètres limit pour autre chose que les facettes visibles.
Je pense que c'était mieux avant puisque ça ne supprimait que les paramètres des facettes visibles.
Pourquoi avoir changé d'ailleurs ? Ça ne marchait pas ?
| allInputs.forEach(input => { | ||
| input.checked = false; | ||
| }); |
There was a problem hiding this comment.
À quoi ça sert de décocher puisqu'on redirige juste après (location.search = ...) ?
| for (let [key, value] of params.entries()) { | ||
| if (!key.startsWith('limit[')) { | ||
| newParams.append(key, value); | ||
| } | ||
| } |
There was a problem hiding this comment.
Même remarque que pour submitFacets, on devrait conserver les paramètres limit qui ne correspondent pas à une facette visible
| <button class="fas fa-filter" id="submit-facets" title="<?php echo $this->translate('Filter with selected facets');?>"></button> | ||
| <button class="fas fa-times" id="reset-facets" title="<?php echo $this->translate('Reset all filters');?>"></button> |
| data-expand-label="<?php echo $this->escapeHtml($this->searchCurrentPage()->settings()['facet_limit_expand_label']); ?>" | ||
| data-collapse-label="<?php echo $this->escapeHtml($this->searchCurrentPage()->settings()['facet_limit_collapse_label']); ?>"> | ||
| <?php echo $this->escapeHtml($this->searchCurrentPage()->settings()['facet_limit_expand_label']); ?> | ||
| </button> |
There was a problem hiding this comment.
Tu peux utiliser $settings (déclaré plus haut) à la place de $this->searchCurrentPage()->settings()