Drupal → Интеграция плавающих лейблов (float label)

08.06.2024

Интеграция в друпал плавающих лейблов:

// 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+
Похожие записи

Добавить комментарий