/** * {@inheritdoc} */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element = parent::formElement($items, $delta, $element, $form, $form_state); $date_order = $this->getSetting('date_order'); if ($this->getFieldSetting('datetime_type') == DateRangeItem::DATETIME_TYPE_DATETIME) { $time_type = $this->getSetting('time_type'); $increment = $this->getSetting('increment'); } else { $time_type = ''; $increment = ''; } // Set up the date part order array. switch ($date_order) { default: case 'YMD': $date_part_order = ['year', 'month', 'day']; break; case 'MDY': $date_part_order = ['month', 'day', 'year']; break; case 'DMY': $date_part_order = ['day', 'month', 'year']; break; } switch ($time_type) { case '24': $date_part_order = array_merge($date_part_order, ['hour', 'minute']); break; case '12': $date_part_order = array_merge($date_part_order, ['hour', 'minute', 'ampm']); break; case 'none': break; } $element['value'] = ['#type' => 'datelist', '#date_increment' => $increment, '#date_part_order' => $date_part_order] + $element['value']; $element['end_value'] = ['#type' => 'datelist', '#date_increment' => $increment, '#date_part_order' => $date_part_order] + $element['end_value']; return $element; }
/** * {@inheritdoc} */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element = parent::formElement($items, $delta, $element, $form, $form_state); // Identify the type of date and time elements to use. switch ($this->getFieldSetting('datetime_type')) { case DateRangeItem::DATETIME_TYPE_DATE: case DateRangeItem::DATETIME_TYPE_ALLDAY: $date_type = 'date'; $time_type = 'none'; $date_format = $this->dateStorage->load('html_date')->getPattern(); $time_format = ''; break; default: $date_type = 'date'; $time_type = 'time'; $date_format = $this->dateStorage->load('html_date')->getPattern(); $time_format = $this->dateStorage->load('html_time')->getPattern(); break; } $element['value'] += ['#date_date_format' => $date_format, '#date_date_element' => $date_type, '#date_date_callbacks' => [], '#date_time_format' => $time_format, '#date_time_element' => $time_type, '#date_time_callbacks' => []]; $element['end_value'] += ['#date_date_format' => $date_format, '#date_date_element' => $date_type, '#date_date_callbacks' => [], '#date_time_format' => $time_format, '#date_time_element' => $time_type, '#date_time_callbacks' => []]; return $element; }