bootstrap_italia-8.x-0.x-dev/includes/form.inc

includes/form.inc
<?php

/**
 * @file
 * Theme and preprocess functions for forms.
 */

use Drupal\bootstrap_italia\Helper\FormElement;
use Drupal\bootstrap_italia\Helper\FormInput;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Template\Attribute;

/**
 * Implements hook_form_alter() for adding classes and placeholder text to the search forms.
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void {
  if (isset($form['actions']['submit']) && (count($form['actions'])) <= 2) {
    $form['actions']['submit']['#attributes']['class'][] = 'btn';
    $form['actions']['submit']['#attributes']['class'][] = 'btn-primary';
  }

  switch ($form_id) {
    case 'search_block_form':
      // Add placeholder text to keys input.
      $form['keys']['#attributes']['placeholder'] = t('Search by keyword or phrase.');

      // Add classes to the search form submit input.
      $form['actions']['submit']['#attributes']['class'][] = 'btn';
      $form['actions']['submit']['#attributes']['class'][] = 'btn-primary';
      break;

    case 'search_form':
      $form['basic']['keys']['#attributes']['placeholder'] = t('Search by keyword or phrase.');
      $form['basic']['submit']['#attributes']['class'][] = 'btn';
      $form['basic']['submit']['#attributes']['class'][] = 'btn-primary';
      $form['advanced']['submit']['#attributes']['class'][] = 'btn';
      $form['advanced']['submit']['#attributes']['class'][] = 'btn-primary';
      break;
  }

  if (isset($form['#attributes']['class'])) {
    $form['#attributes']['class'][] = 'needs-validation';
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_form_search_block_form_alter(array &$form): void {
  $form['keys']['#placeholder'] = t('Search by keyword or phrase.');
}

/**
 * Implements hook_preprocess_form_element().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_preprocess_form_element(array &$variables): void {
  FormElement::set($variables);
  FormElement::setActiveLabel($variables);
}

/**
 * Implements hook_preprocess_input().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_preprocess_input(array &$variables): void {

  FormInput::set($variables);

  if (!empty($variables['element']['#autocomplete_route_name'])) {
    $variables['autocomplete_message'] = t('Loading…');
  }
}

/**
 * Implements hook_preprocess_select().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_preprocess_select(array &$variables): void {
  if (isset($variables['attributes']['multiple']) &&
    $variables['attributes']['multiple'] == 'multiple'
  ) {
    $variables['attributes']['class'][] = 'border';
  }
}

/**
 * Implements hook_preprocess_container().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_preprocess_container(array &$variables): void {
  if (isset($variables['element']['#attributes']) &&
    $variables['element']['#attributes'] instanceof Attribute &&
    $variables['element']['#attributes']->hasClass('webform-element-description')
  ) {
    $variables['element']['#attributes']->addClass('form-text');
  }

  // Detects form actions.
  if (
    (
      isset($variables['attributes']['class']) &&
      isset($variables['element']['#type']) &&
      $variables['element']['#type'] == 'actions'
    ) ||
    (
      isset($variables['attributes']['class']) &&
      is_array($variables['attributes']['class']) &&
      in_array('form-actions', $variables['attributes']['class'], TRUE)
    )
  ) {
    if (theme_get_setting('forms_action_spacing')) {
      $variables['attributes']['class'][] = 'mt-5';
      $variables['attributes']['class'][] = 'mb-3';
    }
    $variables['attributes']['class'][] = 'text-align-' . theme_get_setting('forms_action_alignment');
  }
}

/**
 * Implements hook_template_preprocess_form_element_label().
 *
 * Ref: https://www.drupal.org/project/coding_standards/issues/3056368
 *
 * @phpstan-ignore missingType.iterableValue
 */
function bootstrap_italia_preprocess_form_element_label(array &$variables): void {
  if (isset($variables['required']) && $variables['required']) {
    $variables['forms_field_label_required_mark'] = (bool) theme_get_setting('forms_field_label_required_mark');
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc