"Exposed * form in block") perd la classe "views-exposed-form" sur sa balise
: * 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
* englobant plutôt que sur le . 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 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 . Voir css/exposed-filters-block.css. $variables['content']['#attached']['library'][] = 'gin_compat/exposed-filters-block'; } }