Интеграция в друпал плавающих лейблов:
// THEMENAME.theme
/**
* Preprocess function for input.html.twig.
*/
function THEMENAME_preprocess_input(array &$vars): void {
if (THEMENAME_element_support_float_label($vars['element'])) {
$vars['attributes']['class'][] = 'float-label__input';
if (!isset($vars['attributes']['placeholder'])) {
$vars['attributes']['placeholder'] = '';
}
}
}
/**
* Preprocess function for form-element.html.twig.
*/
function THEMENAME_preprocess_form_element(array &$vars): void {
if (THEMENAME_element_support_float_label($vars['element'])) {
$vars['attributes']['class'][] = 'float-label';
$vars['label']['#attributes']['class'][] = 'float-label__label';
}
}
/**
* Return TRUE if element support float label.
*/
function THEMENAME_element_support_float_label(array $element): bool {
return
in_array($element['#type'], ['textfield', 'textarea', 'number', 'email', 'password', 'search', 'tel']) &&
!empty($element['#title']) &&
$element['#title_display'] == 'before';
}
Написанное актуально для
Drupal 8+
Похожие записи
- Препроцессинг настроек форматтера перед сохранением
- Перенести определённый виджет параграфа в вкладку "Behavior"
- Показать второй шаг многошаговой формы в модальном окне
- Создание многошаговой формы (multistep form) (8)
- Навесить на элемент managed_file свой ajax callback (Как обновить всю форму при загрузки файла в managed_file)
Добавить комментарий