You are here

public static function DateList::afterBuild in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Plugin/WebformElement/DateList.php \Drupal\webform\Plugin\WebformElement\DateList::afterBuild()

After build handler for Datelist element.

Overrides DateBase::afterBuild

File

src/Plugin/WebformElement/DateList.php, line 235

Class

DateList
Provides a 'datelist' element.

Namespace

Drupal\webform\Plugin\WebformElement

Code

public static function afterBuild(array $element, FormStateInterface $form_state) {
  $element = parent::afterBuild($element, $form_state);

  // Reverse years from min:max to max:min.
  // @see \Drupal\Core\Datetime\Element\DateElementBase::datetimeRangeYears
  if (!empty($element['#date_year_range_reverse']) && isset($element['year']) && isset($element['year']['#options'])) {
    $options = $element['year']['#options'];
    $element['year']['#options'] = [
      '' => $options[''],
    ] + array_reverse($options, TRUE);
  }

  // Suppress inline error messages for datelist sub-elements.
  foreach (Element::children($element) as $child_key) {
    $element[$child_key]['#error_no_message'] = TRUE;
  }

  // Override Datelist validate callback so that we can support custom
  // #required_error message.
  foreach ($element['#element_validate'] as &$validate_callback) {
    if (is_array($validate_callback) && $validate_callback[0] === 'Drupal\\Core\\Datetime\\Element\\Datelist') {
      $validate_callback[0] = DateList::class;
    }
  }
  return $element;
}