Files
drupal-leshed/web/modules/custom/gin_compat/gin_compat.module
T

32 lines
1.4 KiB
PHP

<?php
/**
* @file
* Correctifs de compatibilité pour le thème d'administration Gin.
*/
/**
* Implements hook_preprocess_block().
*
* Un formulaire de filtres exposés placé en bloc autonome (Views > "Exposed
* form in block") perd la classe "views-exposed-form" sur sa balise <form> :
* Drupal core (BlockViewBuilder::preRender()) retire volontairement
* #attributes du contenu d'un bloc pour le fusionner dans le wrapper du
* bloc, donc tout ce qu'on ajoute via hook_form_alter atterrit sur le <div>
* englobant plutôt que sur le <form>. Or c'est justement cette classe que
* Claro/Gin ciblent nativement pour la mise en page flex (voir
* claro/css/components/views-exposed-form.css). On la réinjecte donc ici,
* après ce "vol" d'attributs, directement sur le contenu du bloc afin
* qu'elle atterrisse sur le <form> lors de son propre rendu.
*/
function gin_compat_preprocess_block(array &$variables) {
$plugin_id = $variables['plugin_id'] ?? '';
if (str_starts_with($plugin_id, 'views_exposed_filter_block:')) {
$variables['content']['#attributes']['class'][] = 'views-exposed-form';
// Le wrapper du bloc porte nativement cette même classe : neutralise sa
// "card" (padding/marge/bordure/ombre) pour éviter qu'elle se double
// avec celle du <form>. Voir css/exposed-filters-block.css.
$variables['content']['#attached']['library'][] = 'gin_compat/exposed-filters-block';
}
}