From 0e820333caf2eff5fb3ae996788aef301c64d72a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Valentino=20Me=C4=91imorec?= <valentino@medjimorec.net>
Date: Sat, 28 Apr 2018 23:03:56 +0200
Subject: [PATCH] Added theme options for date time picker

---
 js/drupal.single_datetime.js                      |  3 +++
 src/Element/SingleDateTime.php                    |  1 +
 .../FieldWidget/SingleDateTimeRangeWidget.php     |  1 +
 .../Field/FieldWidget/SingleDateTimeWidget.php    | 15 +++++++++++++++
 4 files changed, 20 insertions(+)

diff --git a/js/drupal.single_datetime.js b/js/drupal.single_datetime.js
index 47f1907..917c15f 100644
--- a/js/drupal.single_datetime.js
+++ b/js/drupal.single_datetime.js
@@ -82,6 +82,8 @@
 
         var inline = input.data('inline');
 
+        var theme = input.data('datetimepickerTheme');
+
         // If is date & time field.
         if (widgetType === 'datetime') {
           format = (hourFormat === '12h') ? 'Y-m-d h:i:s A' : 'Y-m-d H:i:s';
@@ -105,6 +107,7 @@
           maxDate,
           yearStart,
           yearEnd,
+          theme,
         });
       });
     },
diff --git a/src/Element/SingleDateTime.php b/src/Element/SingleDateTime.php
index c07d747..b77ee40 100644
--- a/src/Element/SingleDateTime.php
+++ b/src/Element/SingleDateTime.php
@@ -83,6 +83,7 @@ class SingleDateTime extends FormElement {
       'data-disable-days' => Json::encode($disabled_days),
       'data-exclude-date' => $exclude_date,
       'data-inline' => !empty($element['#inline']) ? 1 : 0,
+      'data-datetimepicker-theme' => $element['#datetimepicker-theme'],
     ];
 
     // Year start.
diff --git a/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php b/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php
index 0c14849..c762ee5 100644
--- a/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php
+++ b/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php
@@ -196,6 +196,7 @@ class SingleDateTimeRangeWidget extends SingleDateTimeWidget implements Containe
       '#disable_days' => $this->getSetting('disable_days'),
       '#exclude_date' => $this->getSetting('exclude_date'),
       '#inline' => $this->getSetting('inline'),
+      '#datetimepicker_theme' => $this->getSetting('datetimepicker_theme'),
       '#min_date' => $this->getSetting('min_date'),
       '#max_date' => $this->getSetting('max_date'),
       '#year_start' => $this->getSetting('year_start'),
diff --git a/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php b/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php
index 7abf459..e0aa1b2 100644
--- a/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php
+++ b/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php
@@ -35,6 +35,7 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor
       'disable_days' => [],
       'exclude_date' => '',
       'inline' => FALSE,
+      'datetimepicker_theme' => 'default',
       'min_date' => '',
       'max_date' => '',
       'year_start' => '',
@@ -103,6 +104,17 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor
       '#default_value' => $this->getSetting('inline'),
       '#required' => FALSE,
     ];
+    $elements['datetimepicker_theme'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Theme'),
+      '#description' => $this->t('Setting a color scheme. Now only supported default and dark theme'),
+      '#options' => [
+        'default' => $this->t('Default'),
+        'dark' => $this->t('Dark'),
+      ],
+      '#default_value' => $this->getSetting('datetimepicker_theme'),
+      '#required' => FALSE,
+    ];
     $elements['min_date'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Set a limit to the minimum date/time allowed to pick.'),
@@ -174,6 +186,8 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor
 
     $summary[] = t('Display inline widget: @render_widget', ['@render_widget' => !empty($this->getSetting('inline')) ? t('Yes') : t('No')]);
 
+    $summary[] = t('Theme: @theme', ['@theme' => ucfirst($this->getSetting('datetimepicker_theme'))]);
+
     $summary[] = t('Minimum date/time: @min_date', ['@min_date' => !empty($min_date) ? $min_date : t('None')]);
 
     $summary[] = t('Maximum date/time: @max_date', ['@max_date' => !empty($max_date) ? $max_date : t('None')]);
@@ -309,6 +323,7 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor
     $element['value']['#disable_days'] = $this->getSetting('disable_days');
     $element['value']['#exclude_date'] = $this->getSetting('exclude_date');
     $element['value']['#inline'] = $this->getSetting('inline');
+    $element['value']['#datetimepicker-theme'] = $this->getSetting('datetimepicker_theme');
     $element['value']['#min_date'] = $this->getSetting('min_date');
     $element['value']['#max_date'] = $this->getSetting('max_date');
     $element['value']['#year_start'] = $this->getSetting('year_start');
-- 
GitLab