public static function BootstrapDate::processBootstrapDate in Bootstrap Datepicker 8        
                          
                  
                        
File
 
   - src/Element/BootstrapDate.php, line 66
 
  
  Class
  
  - BootstrapDate 
 
  - Provides a BootstrapDate form element.
 
  Namespace
  Drupal\bootstrap_datepicker\Element
Code
public static function processBootstrapDate(&$element, FormStateInterface $form_state, &$complete_form) {
  
  $default_settings = BootstrapDatepickerBase::defaultSettings();
  
  $settings = [
    'data-provide' => 'datepicker',
  ];
  
  foreach ($element as $key => $value) {
    $newKey = 'data-date-' . str_replace('_', '-', str_replace('#', '', $key));
    $dsKey = str_replace('#', '', $key);
    if (array_key_exists($dsKey, $default_settings)) {
      if ($default_settings[$dsKey] != $value) {
        
        if ($element[$key] === '1') {
          $element[$key] = 'true';
        }
        if ($element[$key] === '0') {
          $element[$key] = 'false';
        }
        $settings[$newKey] = Html::escape($element[$key]);
      }
    }
  }
  
  $settings['data-date-title'] = $element['#datepicker_title'] ?? NULL;
  
  $element['#attributes'] += $settings;
  
  $element['#attributes']['autocomplete'] = 'off';
  
  $element['#attached']['library'][] = 'bootstrap_datepicker/datepicker';
  
  $element['#attached']['library'][] = 'bootstrap_datepicker/datepicker_' . $element['#language'];
  
  if (!empty($element['#value'])) {
    $new_date = new DrupalDateTime($element['#value']);
    
    $pattern = [
      '/(?<!m)m(?!m)/i',
      '/mm/i',
      '/(?<!d)d(?!d)/i',
      '/dd/i',
      '/yyyy/i',
      '/yy/i',
    ];
    $replacement = [
      'n',
      'm',
      'j',
      'd',
      'o',
      'y',
    ];
    $date_format = preg_replace($pattern, $replacement, $element['#format']);
    $element['#value'] = $new_date
      ->format($date_format);
  }
  return $element;
}