32 lines
1.4 KiB
PHP
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';
|
|
}
|
|
}
|